[Feature][Modem]Add Modem Patch P1

Change-Id: Idee4f9fd6700b484f7db86704cf5639cec4d71a2
diff --git a/mcu/protocol/interface/ddm/d2cm_struct.h b/mcu/protocol/interface/ddm/d2cm_struct.h
old mode 100644
new mode 100755
index cfae5c2..1ed58ae
--- a/mcu/protocol/interface/ddm/d2cm_struct.h
+++ b/mcu/protocol/interface/ddm/d2cm_struct.h
@@ -411,6 +411,7 @@
     d2cm_act_data_call_ran_info_struct fb_ran_info;    // RAN info of non-3GPP for fb_cid
     d2cm_act_data_call_retry_info_struct retry_info;    // retry timer for APN
     kal_int32 res;
+    res_info_struct res_info;
 
     /* private part */
     union
@@ -646,6 +647,7 @@
     d2cm_act_data_call_if_info_struct if_info;    // for interface information
     d2cm_act_data_call_ran_info_struct ran_info;    // RAN info of non-3GPP
     kal_int32 res;
+    res_info_struct res_info;
 
     /* private part */
     union
diff --git a/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h b/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h
old mode 100644
new mode 100755
index 76a122a..2966d69
--- a/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h
+++ b/mcu/protocol/interface/errc/5g/errc_nrrc_struct.h
@@ -54,8 +54,23 @@
  * ==========================================================================
  * $Log$
  *
+ * 08 11 2022 ot_asmita.k
+ * [MOLY00822474] ?Transsion??requirement??feature?better RAT detection
+ * 	
+ * 	.
+ *
+ * 07 27 2022 aimee.li
+ * [MOLY00843682] ?????? 3429378: ?21121?????????????????21121 CU+CMCC(SA+IMS)??????EPSFB????????? ???3/3
+ * 	
+ * 	.
+ *
+ * 07 25 2022 aimee.li
+ * [MOLY00843682] 软件测试缺陷 3429378: ã€?21121】ã€?湖å?—湘潭】ã€?网优】ã€?扫网测试】21121 CU+CMCC(SA+IMS)å?¡ä¸€ä¸»å?¡è?”通EPSFB通è¯?过程中无法上网 概率:3/3
+ * 	
+ * Sec algorithm interface
+ *
  * 01 20 2022 tina.ma
- * [MOLY00750695] N77/78????????
+ * [MOLY00750695] N77/78频率范围��?制功能
  * 	
  * 	.
  *
@@ -87,7 +102,7 @@
  * 06 30 2020 doris.jiang
  * [MOLY00534637] [Gen97] EM/ICD check in for DMF feature
  * 	
- * 	[MOLY00525281] NSA°åç»´æ?求ïSCGæ·»å失败主动上报事件
+ * 	[MOLY00525281] NSA��维�?求�SCG添�失败主动上报事件
  * 	
  * 	[Huawei requirement] ICD development - SCG Failure event/ SCG release event
  *
@@ -685,6 +700,10 @@
     LOCAL_PARA_HDR
     kal_bool                                     result;
     kal_uint8                                    config_bitmap;
+    kal_bool                                     mn_ciphering_algorithm_valid;
+    enpdcp_ciphering_alg_enum                    mn_ciphering_algorithm;
+    kal_bool                                     mn_integrity_algorithm_valid;
+    enpdcp_integrity_alg_enum                    mn_integrity_algorithm;
     errc_nrrc_ie_check_cnf_chctrl_param_struct   chctrl_param;
 } errc_nrrc_ie_check_cnf_struct;
 
@@ -963,6 +982,7 @@
     nr_redirect_info_struct    redirect_info[MAX_NUM_NR_REDIRECTION_FREQ];
     kal_uint32                 nr_afr_timer;
     kal_bool                   is_elevator_mode;  // used for 4G5 elevator mode
+    kal_bool                   is_better_rat_detect_ongoing;  // used for better RAT detection
 } errc_nrrc_activate_nrcell_req_struct;
 
 /* MSG_ID_ERRC_NRRC_ACTIVATE_NRCELL_CNF */
diff --git a/mcu/protocol/interface/general/gmss_nwsel_struct.h b/mcu/protocol/interface/general/gmss_nwsel_struct.h
old mode 100644
new mode 100755
index 57a4b32..b77a0ef
--- a/mcu/protocol/interface/general/gmss_nwsel_struct.h
+++ b/mcu/protocol/interface/general/gmss_nwsel_struct.h
@@ -68,6 +68,11 @@
  *
  * removed!
  * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
  *
  * removed!
  *
@@ -1236,10 +1241,11 @@
 typedef struct
 {
     LOCAL_PARA_HDR
-    kal_uint32            trx_id;         /* Transaction ID */
-    rat_enum              available_rat;  /* rat need to be searched */
-    rat_enum              prefer_rat;     /* subset of available rat, search those RAT first. RATN_NONE if no preference */
-    module_type           source;         /* The source module of this service scan */
+    kal_uint32            trx_id;            /* Transaction ID */
+    rat_enum              available_rat;     /* rat need to be searched */
+    rat_enum              prefer_rat;        /* subset of available rat, search those RAT first. RATN_NONE if no preference */
+    module_type           source;            /* The source module of this service scan */
+	kal_bool              is_preempt_needed; /* Whether NWSEL need to abort current search action and do service scan first */
 } gmss_nwsel_service_scan_req_struct;
 
 typedef struct
diff --git a/mcu/protocol/interface/general/vdm_gmss_struct.h b/mcu/protocol/interface/general/vdm_gmss_struct.h
old mode 100644
new mode 100755
index b3db2b7..63705de
--- a/mcu/protocol/interface/general/vdm_gmss_struct.h
+++ b/mcu/protocol/interface/general/vdm_gmss_struct.h
@@ -104,6 +104,7 @@
     rat_enum        available_rat;        /* rat need to be searched */
     rat_enum        prefer_rat;           /* subset of available rat, search those RAT first. RATN_NONE if no preference */
     module_type     source;               /* The source module of this service scan */
+    kal_bool        is_preempt_needed;    /* indicate the current search request can preempt the ongoing search procedure */
 } vdm_gmss_service_scan_req_struct;
 
 typedef struct
diff --git a/mcu/protocol/interface/ims/d2pm_d2rm_struct.h b/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
old mode 100644
new mode 100755
index a0b9aa2..22b617b
--- a/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
+++ b/mcu/protocol/interface/ims/d2pm_d2rm_struct.h
@@ -352,6 +352,7 @@
     d2pm_d2rm_retry_info_struct retry_info;
     epdg_mapped_info_struct     epdg_mapped_info;
     d2pm_d2rm_res_enum res;
+    res_info_struct res_info;
 
     /* private part */
     d2pm_d2rm_act_data_call_cnf_prv_struct d2pm_d2rm_prv;
@@ -583,6 +584,7 @@
     d2pm_d2rm_net_info_struct net_info;    // for Internet information
     ran_info_struct ran_info;    // RAN info of non-3GPP
     d2pm_d2rm_res_enum res;
+    res_info_struct res_info;
 
     /* private part */
     d2pm_d2rm_act_data_call_ind_prv_struct d2pm_d2rm_prv;
diff --git a/mcu/protocol/interface/ims/d2rm_ddm_struct.h b/mcu/protocol/interface/ims/d2rm_ddm_struct.h
old mode 100644
new mode 100755
index 56af80e..5fc5bfd
--- a/mcu/protocol/interface/ims/d2rm_ddm_struct.h
+++ b/mcu/protocol/interface/ims/d2rm_ddm_struct.h
@@ -372,6 +372,9 @@
 
     // ddm_res_enum res_code;
     kal_uint32 res_code;
+    // result info
+    res_info_ps_cause_t ps_cause;
+    res_info_nw_cause_t nw_cause;
     /* private part */
     d2rm_ddm_act_data_call_cnf_prv_struct d2rm_ddm_prv;
     d2pm_ddm_act_data_call_cnf_prv_struct d2pm_ddm_prv;
@@ -532,6 +535,8 @@
     d2rm_ddm_ip_info_struct ip_info;
     d2rm_ddm_net_info_struct net_info;
     ddm_res_enum res_code;
+    res_info_ps_cause_t ps_cause;
+    res_info_nw_cause_t nw_cause;
     /* private part */
     d2rm_ddm_act_data_call_ind_prv_struct d2rm_ddm_prv;
     d2pm_ddm_act_data_call_ind_prv_struct d2pm_ddm_prv;
diff --git a/mcu/protocol/interface/ims/imcb_imc_struct.h b/mcu/protocol/interface/ims/imcb_imc_struct.h
old mode 100644
new mode 100755
index 14ea0b7..6850014
--- a/mcu/protocol/interface/ims/imcb_imc_struct.h
+++ b/mcu/protocol/interface/ims/imcb_imc_struct.h
@@ -1418,8 +1418,7 @@
     imcf_uint32           sip_uri_type; /* ims_reg_sip_uri_type_enum */
     imcf_uint8            retry_after_ongoing;
     imcf_uint8            emergency_type;
-    imcf_uint8            has_sent_register;
-    imcf_uint8            pad[1];
+    imcf_uint8            pad[2];
 } imcb_imc_ims_reg_state_req_struct;
 
 /**
diff --git a/mcu/protocol/interface/ims/ims_common_def.h b/mcu/protocol/interface/ims/ims_common_def.h
old mode 100644
new mode 100755
index f81a353..49b4b02
--- a/mcu/protocol/interface/ims/ims_common_def.h
+++ b/mcu/protocol/interface/ims/ims_common_def.h
@@ -53,6 +53,11 @@
  *===========================================================
  * $Log$
  *
+ * 07 28 2022 ot_gang.zhang
+ * [MOLY00823817] [MT6879][Figeac][S0][R2][JAPAN][SOFTBANK][TB][TrialNW][SIP PANI Info][CR Review Excluded] Supporting OTR-Voice-032066
+ * 	
+ * 	.
+ *
  * 07 07 2022 jasleen.k
  * [MOLY00846008] [MT6873][Margaux][Q0][R3][JAPAN][SOFTBANK][SA][SIM][Lab][Degrade, CORE_GEN-10n-22-1001] On W22.14.P1, UE kept sending PDU_REQ(for IMS) after received DEREGISTRATION_REQ(re-registration required). Note that W21.51.P3 didn't have this issue.
  * 	
@@ -3244,6 +3249,30 @@
     kal_uint8                       ua_enabled;         ///< UA enabled
 } VoLTE_Event_UA_State_t;
 
+/*PANI header necessary information , send from call UA to STACK*/
+typedef struct _VoLTE_Event_UA_Stack_PANI_Info_ {
+    LOCAL_PARA_HDR
+    //Basic information for PANI
+    kal_int32                       acct_id;
+    kal_uint8                       cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+    kal_int8                        cell_id_3gpp[VOLTE_MAX_CELL_ID_LENGTH];
+    kal_int8                        g_emerg_cell_id[VOLTE_MAX_CELL_ID_LENGTH];
+    kal_int8                        country_code[8];
+    kal_uint32                      net_type;               ///< VoLTE_Event_Network_Type_e
+    kal_int32                       sub_net_type;           ///< VoLTE_Event_Network_Type_e
+    kal_int8                        pani_access_category;   ///decide to carry access-type or access-class in PANI header, refer to VoLTE_Stack_PANI_Access_Category_e
+    kal_uint32                      is_emergency_call;
+
+    //Customization for PANI
+    kal_uint8                       set_zero_cell_id_in_wifi;
+    kal_uint8                       add_country_to_pani;
+    kal_uint8                       add_cellid_to_pani;
+    kal_uint8                       add_timezone_to_pani;
+    kal_uint8                       add_pani_in_ack;
+    kal_uint8                       add_pani_in_cancel;
+    
+} VoLTE_Event_UA_Stack_PANI_Info_t;
+
 /* Teardown Flow for IMCB/REG State un-sync */
 typedef struct {
     LOCAL_PARA_HDR
diff --git a/mcu/protocol/interface/ims/ims_interface_md.h b/mcu/protocol/interface/ims/ims_interface_md.h
old mode 100644
new mode 100755
index 8dfa807..e67f7f0
--- a/mcu/protocol/interface/ims/ims_interface_md.h
+++ b/mcu/protocol/interface/ims/ims_interface_md.h
@@ -42,6 +42,20 @@
  *
  * removed!
  * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
  *
  * removed!
  * removed!
@@ -465,8 +479,9 @@
 typedef enum
 {
     SSDS_IMC_SS_INVALID_TYPE,
-	SSDS_IMC_SS_OPEATION_TYPE,	
-	SSDS_IMC_USSD_TYPE,
+    SSDS_IMC_SS_OPEATION_TYPE,
+    SSDS_IMC_USSD_TYPE,
+    SSDS_IMC_USSD_ENABLE_TYPE,
 }ssds_imc_cmd_class_enum;
     
 typedef enum
@@ -510,7 +525,7 @@
 	SSDS_IMC_OTHER_LOCAL_CLIENT_RESPOND,       /* 3 :other local client has responded X*/
 	SSDS_IMC_NW_NOT_SUPPORT,                   /* 4 :operation not supported*/
 	SSDS_IMC_NW_TIMER_OUT,                     /* 5 :network time out X*/
-
+    SSDS_IMC_NW_ERROR_SESSION_STILL_EXISTS = 10,
 }ssds_ussd_status_enum;
 
 
diff --git a/mcu/protocol/interface/ims/ltecsr_struct.h b/mcu/protocol/interface/ims/ltecsr_struct.h
old mode 100644
new mode 100755
index 07c0b8d..2baae25
--- a/mcu/protocol/interface/ims/ltecsr_struct.h
+++ b/mcu/protocol/interface/ims/ltecsr_struct.h
@@ -58,6 +58,11 @@
  *
  * removed!
  * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
  *
  * removed!
  * removed!
@@ -1174,5 +1179,20 @@
     kal_int16                                   drx_adjustment;
 } nrrc_ltecsr_delay_budget_result_handle_req_struct;
 
+/**
+ * L5 LTECSR SAP
+ */
+typedef enum e_ltecsr_notify_recv_dtmf_event{
+    LTECSR_NOTIFY_RECV_DTMF_EVENT_START     =   0,
+    LTECSR_NOTIFY_RECV_DTMF_EVENT_STOP      =   1,
+    LTECSR_NOTIFY_RECV_DTMF_EVENT_STOP_ALL  =   2
+} ltecsr_notify_recv_dtmf_event_e;
+#define MAX_DTMF_RECV_REPORT_LENGTH 2
+/* L5_LTECSR_RECV_DTMF_IND (LTECSR -> L5) */
+typedef struct s_ltecsr_l5_recv_dtmf_ind_struct {
+    LOCAL_PARA_HDR
+    kal_uint8 mode;                                     /* 0:START, 1:STOP, 2:STOP_ALL */
+    kal_char digit[MAX_DTMF_RECV_REPORT_LENGTH];        /* digit[0]: the DTMF event char, digit[1]: always ended with '\0' */
+} l5_ltecsr_recv_dtmf_ind_struct;
 #endif
 
diff --git a/mcu/protocol/interface/l4/l4c2rac_struct.h b/mcu/protocol/interface/l4/l4c2rac_struct.h
old mode 100644
new mode 100755
index 327cfca..084b1b5
--- a/mcu/protocol/interface/l4/l4c2rac_struct.h
+++ b/mcu/protocol/interface/l4/l4c2rac_struct.h
@@ -871,6 +871,13 @@
     kal_bool ims_pdn_activation_ongoing;
  } l4crac_ims_pdn_activation_req_struct;
 
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_emc_info_valid;
+    kal_bool is_nr_emc_service_available;
+} l4crac_nr_emc_service_availability_ind_struct;
+
 #if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
 typedef struct
 {
diff --git a/mcu/protocol/interface/l4/mmi2mm_struct.h b/mcu/protocol/interface/l4/mmi2mm_struct.h
old mode 100644
new mode 100755
index 137bff1..5d103ce
--- a/mcu/protocol/interface/l4/mmi2mm_struct.h
+++ b/mcu/protocol/interface/l4/mmi2mm_struct.h
@@ -58,6 +58,9 @@
  *
  * removed!
  * removed!
+ *
+ * removed!
+ * removed!
  * removed!
  * removed!
  *
@@ -451,9 +454,7 @@
 #ifdef __TC02_SECURITY_REQUIREMENT__
     kal_uint8 nvram_imsi_loci_gloci[MAX_LEN_OF_IMSI_LOCI_GLOCI]; //mtk02475: for man-in-middle-attack prevention
 #endif
-#ifdef __MM_INTEGRITY_PREF__
-    kal_bool is_disable_integrity_check;
-#endif 
+    kal_bool is_disable_integrity_check; 
     nvram_ef_mm_data_struct    nvram_mm_data_info;
     nvram_ef_t3346_timer_info_struct t3346_info;
     init_cause_enum init_cause;
diff --git a/mcu/protocol/interface/l4/nas_sv_struct.h b/mcu/protocol/interface/l4/nas_sv_struct.h
old mode 100644
new mode 100755
index b3d1d2e..3d0c9e7
--- a/mcu/protocol/interface/l4/nas_sv_struct.h
+++ b/mcu/protocol/interface/l4/nas_sv_struct.h
@@ -1172,6 +1172,7 @@
     vg_emergency_service_ind_enum   emc_supported_indicator;
     vg_emergency_fallback_ind_enum  emc_fallback_supported_indicator;
     vgmm_5g_update_status_enum      vg_update_status;
+    kal_bool                        is_proc_reported_earlier;
 }vgmm_rat_specific_param_container_struct;
 
 typedef union
@@ -1192,6 +1193,17 @@
     nas_rat_specific_param_container_union nas_specific_container;
 } nas_sv_any_regn_result_ind_struct;
 
+typedef struct {
+    LOCAL_PARA_HDR
+    nas_proc_enum               nas_proc;
+    lr_result_enum              lr_result;
+    mm_cause_enum               lr_cause;    // This value may be replaced by customized cause.
+    kal_uint8                   attempt_counter;
+    mm_cause_enum               airlr_cause;
+} nas_sv_vgmm_proc_result_ind_struct;
+
+typedef nas_sv_vgmm_proc_result_ind_struct nwsel_nas_sv_vgmm_proc_result_ind_struct;
+
 typedef nas_sv_any_regn_result_ind_struct nwsel_nas_sv_regn_result_ind_struct;
 
 typedef nwsel_nas_sv_plmn_band_ind_struct nas_sv_ratcm_plmn_band_ind_struct;
@@ -1465,6 +1477,8 @@
 
     kal_bool                    vgmm_ims_voice_over_ps_ind_present;    
     ims_ind_enum                vgmm_ims_voice_over_ps_ind;
+
+    kal_bool                    vgmm_is_reattach_required;
     /* End of VGMM Definitions */
 }nas_sv_vgmm_broadcast_regn_result_struct;
 #endif //__FIVEG_NAS__
@@ -1480,6 +1494,8 @@
     /* Whether the UE is registered or not according to state  and current executing procedure in EMM view 
          used for EMM/VGMM un-sync state checking for any_xmm_broadcast_regn_result handling */
     emm_bcast_regn_update_enum  emm_regn_update_type;
+
+    kal_bool                    emm_is_reattach_required;
     /* End of EMM Definitions */
 }nas_sv_emm_broadcast_regn_result_struct;
 
@@ -1659,6 +1675,19 @@
     kal_bool is_searching;
 } nwsel_nas_sv_as_plmn_search_report_ind_struct;
 
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_emc_info_valid;
+    kal_bool is_nr_emc_service_available;
+} nwsel_nas_sv_nr_emc_service_availability_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_emc_info_valid;
+} nwsel_nas_sv_nr_emc_service_availability_rsp_struct;
+
 #if 0
 /* under construction !*/
 /* under construction !*/
diff --git a/mcu/protocol/interface/l4/rac2l4c_struct.h b/mcu/protocol/interface/l4/rac2l4c_struct.h
old mode 100644
new mode 100755
index 91846be..5a15392
--- a/mcu/protocol/interface/l4/rac2l4c_struct.h
+++ b/mcu/protocol/interface/l4/rac2l4c_struct.h
@@ -745,6 +745,7 @@
     rat_enum rat;
     esm_cause_enum esm_cause;
     lr_result_enum lr_result;
+    plmn_id_struct plmn_id;
 }l4crac_nw_reg_rej_ind_struct; //MOLY00293006
 
 typedef l4crac_plmn_found_ind_struct l4c_peer_plmn_found_ind_struct;
@@ -878,6 +879,13 @@
 } l4crac_nw_black_list_state_ind_struct;
 #endif
 
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_emc_info_valid;
+} l4crac_nr_emc_service_availability_rsp_struct;
+
+
 #if defined(__ECALL_SUPPORT__) || defined(__NG_ECALL_SUPPORT__)
 typedef struct
 {
diff --git a/mcu/protocol/interface/l4/rac_gmss_struct.h b/mcu/protocol/interface/l4/rac_gmss_struct.h
old mode 100644
new mode 100755
index 059a906..9b94664
--- a/mcu/protocol/interface/l4/rac_gmss_struct.h
+++ b/mcu/protocol/interface/l4/rac_gmss_struct.h
@@ -161,6 +161,7 @@
 #ifdef __FIVEG_NAS__
     nvram_ef_vgnas_5gmm_failure_list_struct vgnas_5gmm_failure_list;
 #endif
+    nvram_nwsel_enable_s1_n1_action_enum nwsel_action_enable_s1_n1[NVRAM_NWSEL_PROC_MAX];
     nvram_allowed_mcc_struct allowed_mcc_data;
 } rac_gmss_init_req_struct;
 
diff --git a/mcu/protocol/interface/l4/rac_nas_sv_struct.h b/mcu/protocol/interface/l4/rac_nas_sv_struct.h
old mode 100644
new mode 100755
index d161ac0..61d0d51
--- a/mcu/protocol/interface/l4/rac_nas_sv_struct.h
+++ b/mcu/protocol/interface/l4/rac_nas_sv_struct.h
@@ -236,6 +236,19 @@
 
 typedef nwsel_nas_sv_as_plmn_search_report_ind_struct rac_nas_sv_as_plmn_search_report_ind_struct;
 
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_emc_info_valid;
+    kal_bool is_nr_emc_service_available;
+} rac_nas_sv_nr_emc_service_availability_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool is_emc_info_valid;
+}  rac_nas_sv_nr_emc_service_availability_rsp_struct;
+
 #endif
 
 
diff --git a/mcu/protocol/interface/l4/rac_vgmm_struct.h b/mcu/protocol/interface/l4/rac_vgmm_struct.h
old mode 100644
new mode 100755
index f0cd013..3f8cfce
--- a/mcu/protocol/interface/l4/rac_vgmm_struct.h
+++ b/mcu/protocol/interface/l4/rac_vgmm_struct.h
@@ -376,6 +376,8 @@
     LOCAL_PARA_HDR
 } rac_vgmm_5gsloci_clear_req_struct;
 
+typedef l4crac_set_ms_sv_req_struct rac_vgmm_set_ms_sv_req_struct;
+
 typedef l4crac_vgmm_proc_failure_ind_struct rac_vgmm_proc_failure_ind_struct;
 
 typedef struct  {
@@ -429,6 +431,16 @@
     kal_uint8                   num_of_ladn_info;
     ladn_info_with_tai_list_type_struct   ladn_info[MAX_LADN_INFO];
 } rac_vgmm_nw_params_ind_struct;
+
+typedef struct
+{
+    LOCAL_PARA_HDR
+    kal_bool                          is_ps_sim_valid;
+    nas_proc_enum                     event;
+    vgmm_cause_enum                   original_cause;
+    vgmm_cause_enum                   converted_cause;
+} rac_vgmm_cause_info_ind_struct;
+
 /********************************************
  *                VARIABLES                 *
  ********************************************/
diff --git a/mcu/protocol/interface/l4/vdm_l4c_struct.h b/mcu/protocol/interface/l4/vdm_l4c_struct.h
old mode 100644
new mode 100755
index 9403006..9975b43
--- a/mcu/protocol/interface/l4/vdm_l4c_struct.h
+++ b/mcu/protocol/interface/l4/vdm_l4c_struct.h
@@ -71,6 +71,7 @@
 #include "rac_vgmm_struct.h"
 #include "as_inter_core_enum.h"
 #include "rac2l4c_struct.h"
+#include "rac_nas_sv_struct.h"
 
 //copy from l4c_eval_ims_sys_info_ind_struct
 typedef struct
@@ -572,6 +573,10 @@
 /* MSG_ID_VDM_L4C_GMSS_SET_HVOLTE_MODE_CNF */
 typedef vdm_l4c_common_response_struct vdm_l4c_gmss_set_hvolte_mode_cnf_struct;
 
+typedef rac_nas_sv_nr_emc_service_availability_ind_struct vdm_l4c_nr_emc_service_availability_ind_struct;
+
+typedef rac_nas_sv_nr_emc_service_availability_rsp_struct vdm_l4c_nr_emc_service_availability_rsp_struct;
+
 /*MSG_ID_VDM_L4C_EMCS_REQ*/
 typedef struct
 {
diff --git a/mcu/protocol/interface/l4misc/l3_inc_enums.h b/mcu/protocol/interface/l4misc/l3_inc_enums.h
old mode 100644
new mode 100755
index a56e4b0..430e01f
--- a/mcu/protocol/interface/l4misc/l3_inc_enums.h
+++ b/mcu/protocol/interface/l4misc/l3_inc_enums.h
@@ -61,6 +61,22 @@
  * removed!
  * removed!
  *
+
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
  * removed!
  * removed!
  * removed!
@@ -2791,6 +2807,7 @@
 
     /* VzW VGMM NAS not allow cause */
     NWSEL_NAS_NOT_ALLOW_VZW_VGMM_N1_MODE_NOT_ALLOWED_TG,
+    NWSEL_N1_DISABLED_BY_NR_EMC_AVAILABILITY,
 } nwsel_capability_disabled_reason_enum;
 
 typedef enum {
@@ -5501,7 +5518,10 @@
     VGMM_CAUSE_MESSAGE_NOT_COMPATIBLE           = 0x65,
     VGMM_CAUSE_PROTOCOL_ERROR                   = 0x6f,
 
+    /* Causes in ts24.301 but not in ts24.501. There causes are used for interworking between LTE and NR. */
+    VGMM_CAUSE_NO_EPS_CTXT_ACT                  = EMM_CAUSE_NO_EPS_CTXT_ACT,
 
+    
     /* MTK internal-defined causes */
     /* NOTE: the values of MTK internal-defined causes should be the same as mm_cause_enum */
     VGMM_CAUSE_NO_COVERAGE                       = NO_COVERAGE,
diff --git a/mcu/protocol/interface/l4misc/l4c_lcs_cmd.h b/mcu/protocol/interface/l4misc/l4c_lcs_cmd.h
old mode 100644
new mode 100755
index e94004b..06e5f2e
--- a/mcu/protocol/interface/l4misc/l4c_lcs_cmd.h
+++ b/mcu/protocol/interface/l4misc/l4c_lcs_cmd.h
@@ -107,6 +107,7 @@
 
 extern void l4c_lcs_ecc_info_req(kal_bool ecc_ongoing);
 extern void l4c_lcs_emt_info_req(kal_bool emt_ongoing);
+extern void l4c_lcs_emc_info_req(call_status_enum call_status);
 
 #endif /* _L4C_LCS_CMD_H */ 
 
diff --git a/mcu/protocol/interface/l4misc/l4c_utility.h b/mcu/protocol/interface/l4misc/l4c_utility.h
old mode 100644
new mode 100755
index 064228b..52a44f5
--- a/mcu/protocol/interface/l4misc/l4c_utility.h
+++ b/mcu/protocol/interface/l4misc/l4c_utility.h
@@ -138,6 +138,7 @@
 #define convert_to_bcd(source, dest, max_dest_len) convert_to_general_bcd(source, dest, max_dest_len, CONVERT_TO_BCD_NORMAL)
 #define convert_to_bcd_wild(source, dest, max_dest_len) convert_to_general_bcd(source, dest, max_dest_len, CONVERT_TO_BCD_WILD)
 extern kal_uint8 convert_to_general_bcd(kal_uint8 *source, kal_uint8 *dest, kal_uint8 max_dest_len, kal_uint8 type);
+extern kal_bool l4c_get_nw_cause(kal_uint16 ps_cause, kal_uint16 *nw_err_cause);
 
 
 #define convert_to_digit(source, dest) convert_to_general_digit(source, dest, CONVERT_TO_DIGIT_NORMAL)
@@ -1072,4 +1073,6 @@
 extern kal_bool l4c_is_epsfb_needed(protocol_id_enum ps_id, rat_type_enum source_rat, rat_type_enum target_rat, irat_type_enum ir_type);
 #endif
 extern kal_bool l4c_is_call_ongoing_over_wifi();
+extern kal_bool l4c_is_vzw_private_uicc(kal_uint8 ps_id);
+extern void l4c_set_is_vzw_private_uicc();
 #endif /* _L4C_UTILITY_H */ /* l4c_utility.h */
diff --git a/mcu/protocol/interface/l4misc/rmmi_context.h b/mcu/protocol/interface/l4misc/rmmi_context.h
old mode 100644
new mode 100755
index 2e93695..b141afa
--- a/mcu/protocol/interface/l4misc/rmmi_context.h
+++ b/mcu/protocol/interface/l4misc/rmmi_context.h
@@ -500,6 +500,7 @@
     esm_cause_enum esm_rej_cause;
     rmmi_proc_result_type_enum proc_result;
     nas_proc_enum nas_proc;
+    plmn_id_struct plmn_id;
 } rmmi_nw_rej_cause_attemp_counter_struct;
 
 #if defined(__CDMA2000_RAT__)