Merge "[Feature][T106]version update to T106-V2.01.01.02P56U06.AP.15.13_CAP.15.13"
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
index c6ae463..65c7e3c 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/platform/libtinyalsa/audio_mixer_ctrl.c
@@ -916,6 +916,174 @@
 
 /* yu.dong@20240627 [T106BUG-615]CODEC 8311 using voice_demo to set codec volume has no effect end */
 
+//l.yang modify for bug id T106BUG-337 2023/11/9 start
+#elif defined _USE_CODEC_TI3104
+
+static struct audio_para_conf init_default_para[] = {  //¿¿¿¿¿¿¿
+
+};
+
+static struct audio_para_conf  common_out_para_audio[] = {  //¿¿¿¿¿¿
+    //{"DAC Soft Mute Control", {"0"}},
+};
+
+
+static struct audio_para_conf  common_in_para_audio[] = {  //¿¿¿¿¿¿
+	//{"Mic Gain Control", {"0"}},
+};
+
+static struct audio_para_conf  hp_outpath_para_audio[] = {  //¿¿¿Hp¿¿¿¿
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+};
+
+static struct audio_para_conf  spk_outpath_para_audio[] = { //¿¿¿Spk¿¿¿¿
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+};
+
+static  struct  audio_para_conf  main_mic_inpath_para_audio[] = { //¿¿¿Mic1lp_Mic1lm¿¿¿¿
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+};
+
+static  struct  audio_para_conf  aux_mic_inpath_para_audio[] = {//¿¿¿Mic1rp¿¿¿¿
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+};
+
+static struct audio_para_conf  handset_inoutpath_para_voice[] = {  //¿¿¿Hp¿¿¿¿Mic1lp_Mic1lm¿¿¿¿
+	//in
+	//#0x2d b6 pga mute
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+
+	//out
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+
+	//voice
+	#ifndef USE_CAP_SUPPORT
+	{"voice processing path select", {"handset"}},  // handset speak headset bluetooth
+	#endif
+};
+
+static struct audio_para_conf  headset_inoutpath_para_voice[] = {  //¿¿¿Hp¿¿¿¿ Mic1rp¿¿¿¿
+	//in
+	//#0x2d b6 pga mute
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+
+	//out
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+
+	//voice
+	#ifndef USE_CAP_SUPPORT
+	{"voice processing select", {"headset"}}, // handset speak headset bluetooth
+	#endif
+};
+
+static struct audio_para_conf  spk_inoutpath_para_voice[] = { //¿¿¿Spk¿¿¿¿Mic1lp_Mic1lm¿¿¿¿
+	//in
+	//#0x2d b6 pga mute
+	{"MicBias VG", {"1"}},
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+	{"PGA Capture Switch", {"1","1"}},
+	{"ADC HPF Cut-off", {"1","1"}},
+
+	{"Left PGA Mixer Mic2L Switch",{"1"}},
+	{"Left PGA Mixer Mic2R Switch",{"1"}},
+	{"Right PGA Mixer Mic2L Switch",{"1"}},
+	{"Right PGA Mixer Mic2R Switch",{"1"}},
+
+	//out
+	{"Line Playback Switch", {"1","1"}},
+	{"PCM Playback Volume", {"110","110"}},
+	{"Line Playback Volume", {"8","8"}},
+	{"Line DAC Playback Volume", {"110","110"}},
+	//voice
+
+	#ifndef USE_CAP_SUPPORT
+	{"voice processing path select", {"speak"}}, // handset speak headset bluetooth
+	#endif
+};
+
+static struct audio_para_conf output_dac_vol = {
+   {"PCM Playback Volume", {"110","110"}},
+};
+
+static struct audio_para_conf input_adc_vol = {
+	{"PGA Capture Volume", {"50","50"}}, //yu.dong@20240821 [AUDIO] Fix audio return tone problem on speakerphone
+};
+
+static struct audio_para_conf dac_mute = {
+	"Line Playback Switch", {"0","0"}
+};
+
+static struct audio_para_conf adc_mute = {
+    "MicBias VG", {"0"}
+};
+
+static struct audio_para_conf spk_path_onoff[] = {
+	{"Mono Mixer PCM Playback Switch", {"0"}},
+};
+
+static struct audio_para_conf rcv_path_onoff[] = {
+	{"Mono Mixer PCM Playback Switch", {"0"}},
+};
+
+static struct audio_para_conf earp_path_onoff[] = {
+	{"Speaker Mixer PCM Playback Switch", {"0"}},
+};
+
+static int output_vol_conversion(int vol)
+{
+	return 120;
+}
+
+static int input_vol_conversion(int vol)
+{
+	return 100;
+}
+//l.yang modify for bug id T106BUG-337 2023/11/9 end
+
 #elif defined _USE_CODEC_ES8374
 
 
@@ -1976,7 +2144,7 @@
 }
 
 
-#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_AK4940)||(defined _USE_CODEC_NAU8810)||(defined _USE_CODEC_ES8311)
+#if (defined _USE_CODEC_TI3100)||(defined _USE_CODEC_AK4940)||(defined _USE_CODEC_NAU8810)||(defined _USE_CODEC_ES8311)||(defined _USE_CODEC_TI3104)
 /*
 int mix_set_input_vol(struct mixer *mixer, int volume)
 {
diff --git a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
index 34d4d1b..b8c31ce 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/zxic_app_open/sdk/ril/reference-ril/ril_mm.c
@@ -139,6 +139,7 @@
 		break;

 

 	case 6:

+	case 8://add by hq for bug 107 at 20240822

 		sprintf(state, "%d", RADIO_TECH_HSPA);

 		break;

 	/*LTE*/

@@ -460,8 +461,8 @@
 	char* pZeminfo;

 	T_zEM_EmInfo_Ind* pEmInfo_Ind = NULL;

 

-	char smcc[16] = {0};

-	char smnc[16] = {0};

+	char smcc[4] = {0};//modify by hq for bug 107 at 20240811

+	char smnc[4] = {0};//modify by hq for bug 107 at 20240811

 

 	pZeminfo = alloca(strlen(at_paras) / 2);

 	hexStr2ByteArr(at_paras, pZeminfo);

@@ -484,10 +485,11 @@
 		ci[0].registered = 1;

 		ci[0].timeStamp = curTime;

 

-		sprintf(smcc, "%d%d%d", pNasInfo->tPlmnId.bMCC1, pNasInfo->tPlmnId.bMCC2, pNasInfo->tPlmnId.bMCC3);

+		

+		snprintf(smcc, 4, "%x%x%x", pNasInfo->tPlmnId.bMCC1, pNasInfo->tPlmnId.bMCC2, pNasInfo->tPlmnId.bMCC3); //modify by hq for bug 107 at 20240811

 		smcc[3] = '\0';

-		sprintf(smnc, "%d%d", pNasInfo->tPlmnId.bMNC1, pNasInfo->tPlmnId.bMNC2);

-		smnc[2] = '\0';

+		snprintf(smnc, 3, "%x%x", pNasInfo->tPlmnId.bMNC1, pNasInfo->tPlmnId.bMNC2); //modify by hq for bug 107 at 20240811

+		smnc[2] = '\0';		

 		plte->cellIdentityLte.mcc = atoi(smcc);

 		plte->cellIdentityLte.mnc = atoi(smnc);

 		plte->cellIdentityLte.ci = tScellInfo->dwCellId; //Ð¡ÇøID

@@ -518,6 +520,10 @@
 		plte->signalStrengthLte.rssnr = getRssnr();

 		plte->signalStrengthLte.cqi = 0x7FFFFFFF;

 		plte->signalStrengthLte.timingAdvance = 0x7FFFFFFF;

+		RLOGD("parseCellInfo lte mcc:%d, mnc:%d, ci:%d, pci:%d, tac:%d, earfcn:%d, signalStrength:%d, rsrp:%d, rsrq:%d, rssnr:%d", 

+            plte->cellIdentityLte.mcc, plte->cellIdentityLte.mnc, plte->cellIdentityLte.ci,plte->cellIdentityLte.pci, plte->cellIdentityLte.tac, plte->cellIdentityLte.earfcn, 

+            plte->signalStrengthLte.signalStrength, plte->signalStrengthLte.rsrp, plte->signalStrengthLte.rsrq,plte->signalStrengthLte.rssnr); //add by hq for bug 107 at 20240811

+			  

 	} else if (pEmInfo_Ind->bRatType == 4) {

 		RIL_CellInfoGsm     *gsm = &ci[0].CellInfo.gsm;

 		T_zEm_Gsm_EmInfo_Ind   *tGsmEmInfo = &pEmInfo_Ind->uEmInfo.tGsmEmInfo;

@@ -529,9 +535,10 @@
 		ci[0].registered = 1;

 		ci[0].timeStamp = curTime;

 

-		snprintf(smcc, 3, "%d%d%d", tNasInfo->tPlmn.bMCC1, tNasInfo->tPlmn.bMCC2, tNasInfo->tPlmn.bMCC3);

+		

+		snprintf(smcc, 4, "%x%x%x", tNasInfo->tPlmn.bMCC1, tNasInfo->tPlmn.bMCC2, tNasInfo->tPlmn.bMCC3);//modify by hq for bug 107 at 20240822

 		smcc[3] = '\0';

-		snprintf(smnc, 2, "%d%d", tNasInfo->tPlmn.bMNC1, tNasInfo->tPlmn.bMNC2);

+		snprintf(smnc, 3, "%x%x", tNasInfo->tPlmn.bMNC1, tNasInfo->tPlmn.bMNC2);//modify by hq for bug 107 at 20240822

 		smnc[2] = '\0';

 		gsm->cellIdentityGsm.mcc = atoi(smcc);

 		gsm->cellIdentityGsm.mnc = atoi(smnc);

@@ -549,6 +556,9 @@
 		}

 		gsm->signalStrengthGsm.bitErrorRate = 99;

 		gsm->signalStrengthGsm.timingAdvance = 0x7FFFFFFF;

+		RLOGD("parseCellInfo gsm mcc:%d, mnc:%d, lac:%d, cid:%d, signalStrength:%d", 

+               gsm->cellIdentityGsm.mcc, gsm->cellIdentityGsm.mnc, gsm->cellIdentityGsm.lac,gsm->cellIdentityGsm.cid, 

+               gsm->signalStrengthGsm.signalStrength);//add by hq for bug 107 at 20240822

 	} else if (pEmInfo_Ind->bRatType == 2) {

 		RIL_CellInfoWcdma     *pwcdma = &ci[0].CellInfo.wcdma;

 		T_zEm_W_EmInfo_Ind   *twcdmaEmInfo = &pEmInfo_Ind->uEmInfo.tWEmInfo;

@@ -562,9 +572,9 @@
 		//RLOGD("parseCellInfo wcdma bMCC1:%d, bMCC2:%d, bMCC3:%d", pNasInfo->tPlmn.bMCC1, pNasInfo->tPlmn.bMCC2, pNasInfo->tPlmn.bMCC3);

 		//RLOGD("parseCellInfo wcdma bMNC1:%d, bMNC2:%d", pNasInfo->tPlmn.bMNC1, pNasInfo->tPlmn.bMNC2);

 

-		snprintf(smcc, 4, "%d%d%d", pNasInfo->tPlmn.bMCC1, pNasInfo->tPlmn.bMCC2, pNasInfo->tPlmn.bMCC3);

+		snprintf(smcc, 4, "%x%x%x", pNasInfo->tPlmn.bMCC1, pNasInfo->tPlmn.bMCC2, pNasInfo->tPlmn.bMCC3);	//modify by hq for bug 107 at 20240822

 		smcc[3] = '\0';

-		snprintf(smnc, 3, "%d%d", pNasInfo->tPlmn.bMNC1, pNasInfo->tPlmn.bMNC2);

+		snprintf(smnc, 3, "%x%x", pNasInfo->tPlmn.bMNC1, pNasInfo->tPlmn.bMNC2);	//modify by hq for bug 107 at 20240822

 		smnc[2] = '\0';

 

 		//RLOGD("parseCellInfo wcdma smcc:%s, smnc:%s", smcc, smnc);

@@ -604,7 +614,9 @@
 			pwcdma->signalStrengthWcdma.bitErrorRate = twcdmaEmInfo->uWcellMeasInfo.tNotDchInfo.tFddSCellReselInfo.tScellInfo.bEcNo;

 		}

 

-		//RLOGD("parseCellInfo wcdma psc: %d, signalStrength:%d, bitErrorRate:%d", pwcdma->cellIdentityWcdma.psc, pwcdma->signalStrengthWcdma.signalStrength, pwcdma->signalStrengthWcdma.bitErrorRate);

+		RLOGD("parseCellInfo wcdma mcc:%d, mnc:%d, lac:%d, cid:%d, psc: %d, signalStrength:%d, bitErrorRate:%d", 

+		       pwcdma->cellIdentityWcdma.mcc, pwcdma->cellIdentityWcdma.mnc, pwcdma->cellIdentityWcdma.lac, pwcdma->cellIdentityWcdma.cid, pwcdma->cellIdentityWcdma.psc, 

+		       pwcdma->signalStrengthWcdma.signalStrength, pwcdma->signalStrengthWcdma.bitErrorRate);//add by hq for bug 107 at 20240822

 	} else if (pEmInfo_Ind->bRatType == 1) {

 		ci[0].cellInfoType = RIL_CELL_INFO_TYPE_TD_SCDMA;

 		ci[0].registered = 1;