comparison chipsetsw/layer1/tm_cfile/l1tm_func.c @ 225:d32a7e3ba63d

l1tm_func.c: removed LoCosto DRP-specific functions
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 14 Jan 2017 23:13:40 +0000
parents a576fb23046e
children a5d619b2561c
comparison
equal deleted inserted replaced
224:a576fb23046e 225:d32a7e3ba63d
148 148
149 #if(L1_FF_MULTIBAND == 1) 149 #if(L1_FF_MULTIBAND == 1)
150 extern UWORD8 tm_band; 150 extern UWORD8 tm_band;
151 #endif /*if (L1_FF_MULTIBAND == 1)*/ 151 #endif /*if (L1_FF_MULTIBAND == 1)*/
152 152
153
154 #if (DRP_FW_EXT==0)
155 #if (L1_DRP == 1)
156 #include "drp_drive.h"
157 #include "drp_defines.h"
158 #include "drp_api.h"
159 #include "drp_extern_dependencies.h"
160 #endif //L1_DRP
161
162 #if (RF_FAM == 61)
163 extern T_DRP_SW_DATA drp_sw_data_init;
164 extern T_DRP_SW_DATA drp_sw_data_calib;
165 extern T_DRP_SW_DATA drp_sw_data_calib_saved;
166 extern UINT16 g_pcb_config; //ompas00090550 #262 removal
167 #endif // DRP_FW_EXT==0
168 #endif
169
170 extern void gpio_39_toggle(UINT16 state);
171
172 153
173 // Prototypes from external functions 154 // Prototypes from external functions
174 //------------------------------------ 155 //------------------------------------
175 UWORD16 Convert_l1_radio_freq(SYS_UWORD16 radio_freq); 156 UWORD16 Convert_l1_radio_freq(SYS_UWORD16 radio_freq);
176 157
192 173
193 #if (CODE_VERSION != SIMULATION) 174 #if (CODE_VERSION != SIMULATION)
194 void Cust_tm_tpu_table_write (T_TM_RETURN *tm_return, WORD8 index, UWORD8 size, UWORD8 table[]); 175 void Cust_tm_tpu_table_write (T_TM_RETURN *tm_return, WORD8 index, UWORD8 size, UWORD8 table[]);
195 void Cust_tm_tpu_table_read (T_TM_RETURN *tm_return, WORD8 index); 176 void Cust_tm_tpu_table_read (T_TM_RETURN *tm_return, WORD8 index);
196 #endif 177 #endif
197
198 #if (L1_TPU_DEV == 1)
199 void Cust_tm_flexi_tpu_table_write(T_TM_RETURN * tm_return, WORD8 index, UWORD8 size, WORD16 table[ ]);
200 void Cust_tm_flexi_tpu_table_read(T_TM_RETURN * tm_return, WORD8 index);
201
202 //Flexi ABB Delays
203 void Cust_tm_flexi_abb_write(T_TM_RETURN * tm_return, WORD8 index, UWORD8 size, WORD16 table[ ]);
204 void Cust_tm_flexi_abb_read(T_TM_RETURN * tm_return, WORD8 index);
205
206 #endif
207
208 // DRP Calibration
209 void l1tm_drp_calib_read(T_TESTMODE_PRIM * prim, T_TM_RETURN * tm_return);
210 void l1tm_drp_calib_write(T_TESTMODE_PRIM * prim, T_TM_RETURN * tm_return);
211 178
212 //------------------------------------ 179 //------------------------------------
213 // Prototypes from external functions 180 // Prototypes from external functions
214 //------------------------------------ 181 //------------------------------------
215 182
793 prim->u.tm_params.value); 760 prim->u.tm_params.value);
794 break; 761 break;
795 } 762 }
796 } // end switch 763 } // end switch
797 } 764 }
798
799 #if (L1_DRP == 1)
800 void l1tm_drp_sw_write(T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return)
801 {
802 WORD8 error=0;
803 tm_return->cid=DRP_SW_WRITE;
804 tm_return->index = prim->u.tm_table.index;
805 tm_return->size = 0;
806
807 #if (ETM_PROTOCOL == 1)
808 tm_return->status = -ETM_OK;
809 #else
810 tm_return->status = E_OK;
811 #endif
812
813 switch (prim->u.tm_table.index)
814 {
815 case FFS_TO_SRM:
816 {
817 #if (OP_L1_STANDALONE ==0)
818 // Call function to load ref sw from FFS to SRM
819 error = drp_ref_sw_upload_from_ffs(prim->u.tm_table.table);
820 if(error < 0)
821 {
822 #if (ETM_PROTOCOL == 1)
823 tm_return->status = -ETM_FATAL;
824 #else
825 tm_return->status = E_INVAL;
826 #endif
827 }
828 else
829 {
830 #if (ETM_PROTOCOL == 1)
831 tm_return->status = -ETM_OK;
832 #else
833 tm_return->status = E_OK;
834 #endif
835 }
836 #else // OP_L1_STANDALONE
837 #if (ETM_PROTOCOL == 1)
838 tm_return->status = -ETM_NOSYS;
839 #else
840 tm_return->status = (UWORD8)(-E_NOSYS); //omaps00090550
841 #endif
842 #endif// OP_L1_STANDALONE
843 break;
844 }
845
846 default:
847 {
848 // nothing to do now.
849 break;
850 }
851 } // end switch
852 }
853 #endif
854
855 #if (L1_DRP == 1)
856
857 void l1tm_drp_calib_read(T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return)
858 {
859 // Do Nothing Possible Future use. Intentionally left blank
860 }
861
862 void l1tm_drp_calib_write(T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return)
863 {
864 INT32 error=0;//ompas00090550
865 #if (OP_L1_STANDALONE == 1)
866 UINT8 *ptrsrc, *ptrdst;
867 UINT16 indx, strsize;
868 #endif
869 UINT16 band;
870 volatile UINT16 * ptr_gpio, temp16;
871
872 #define GPIO2_LATCH_IN 0xfffe5800 // GPIO32-48 input register
873 #define GPIO2_LATCH_OUT 0xfffe5802 // GPIO32-48 output register
874 #define GPIO2_CNTL 0xfffe5804 // GPIO32-48 io config, 1=inp, 0= out
875
876 #define GPIO0_LATCH_IN 0xfffe4800 // GPIO0-15 input register
877 #define GPIO0_LATCH_OUT 0xfffe4802 // GPIO0-15 output register
878 #define GPIO0_CNTL 0xfffe4804 // GPIO0-15 io config, 1=inp, 0= out
879
880 tm_return->cid=DRP_CALIB_WRITE;
881 tm_return->index = prim->u.tm_params.index;
882 tm_return->size = 0;
883
884
885 #if (ETM_PROTOCOL == 1)
886 tm_return->status = -ETM_OK;
887 #else
888 tm_return->status = E_OK;
889 #endif
890
891 //#if (OP_L1_STANDALONE == 1)
892 #if 0
893 // Copy drp_sw_data_init into drp_sw_data_calib
894 strsize = sizeof(T_DRP_SW_DATA);
895 ptrsrc = (UINT8 *)(&drp_sw_data_init);
896 ptrdst = (UINT8 *)(&drp_sw_data_calib);
897
898 for(indx=0;indx < strsize;indx++)
899 *ptrdst++ = *ptrsrc++;
900 #endif
901
902 #if 0
903 // GPIO-47 is used for timing measurement.
904 // To enable GPIO - 47as an output, Bit 15 of GPIO2_CNTL = 0
905 ptr_gpio = (UINT16*)GPIO2_CNTL;
906 temp16 = *ptr_gpio;
907 temp16 &= ~(0x8000);
908 *ptr_gpio = temp16;
909
910 // GPIO47 = 1
911 ptr_gpio = (UINT16*)GPIO2_LATCH_OUT;
912 temp16 = *ptr_gpio;
913 temp16 |= 0x8000;
914 *ptr_gpio = temp16;
915 #endif
916 switch (tm_return->index)
917 {
918 case DRP_DUMMY: //Do Nothing Test Purposes
919 break;
920
921 case DRP_READ_FROM_FLASH: // Force the Update of drp_sw_data_calib
922 {
923 // Call function to load data sw from FFS to SRM TBD Use the new Function
924 error = drp_sw_data_calib_upload_from_ffs(&drp_sw_data_calib);
925
926 // error = drp_copy_ref_sw_to_drpsrm( (unsigned char *) &drp_ref_sw);
927
928 error = drp_copy_sw_data_to_drpsrm(&drp_sw_data_calib);
929
930 if(error < 0)
931 {
932 #if (ETM_PROTOCOL == 1)
933 tm_return->status = -ETM_FATAL;
934 #else
935 tm_return->status = E_INVAL;
936 #endif
937 }
938 else
939 {
940 #if (ETM_PROTOCOL == 1)
941 tm_return->status = -ETM_OK;
942 #else
943 tm_return->status = E_OK;
944 #endif
945 }
946
947 break;
948 }
949
950
951 case DRP_DCXO_CALIB:
952 {
953
954 #if (DRP_FW_EXT==1) //pinghua change it as 1
955 band = GSM_BAND;
956 if((g_pcb_config == RF_EU_DUALBAND) || (g_pcb_config == RF_EU_TRIBAND) || (g_pcb_config == RF_PCS1900_900_DUALBAND))
957 band = EGSM_BAND;
958
959 error = drp_dcxo_calib(band, &drp_sw_data_calib);
960 #else
961 error = drp_dcxo_calib(GSM_BAND, &drp_sw_data_calib);
962 #endif
963 if(error < 0)
964 {
965 #if (ETM_PROTOCOL == 1)
966 tm_return->status = -ETM_FATAL;
967 #else
968 tm_return->status = E_INVAL;
969 #endif
970 }
971 else
972 {
973 #if (ETM_PROTOCOL == 1)
974 tm_return->status = -ETM_OK;
975 #else
976 tm_return->status = E_OK;
977 #endif
978 }
979
980 break;
981 }
982
983
984 case DRP_TX_RX_COMMON:
985 {
986 error = drp_tx_rx_common_calib(&drp_sw_data_calib);
987
988 if(error < 0)
989 {
990 #if (ETM_PROTOCOL == 1)
991 tm_return->status = -ETM_FATAL;
992 #else
993 tm_return->status = E_INVAL;
994 #endif
995 }
996 else
997 {
998 #if (ETM_PROTOCOL == 1)
999 tm_return->status = -ETM_OK;
1000 #else
1001 tm_return->status = E_OK;
1002 #endif
1003 }
1004 break;
1005 }
1006
1007
1008 case DRP_LNA_CFREQ:
1009 {
1010 error = drp_lna_cfreq_calib( (UWORD16) prim->u.tm_params.value, &drp_sw_data_calib);
1011 if(error < 0)
1012 {
1013 #if (ETM_PROTOCOL == 1)
1014 tm_return->status = -ETM_FATAL;
1015 #else
1016 tm_return->status = E_INVAL;
1017 #endif
1018 }
1019 else
1020 {
1021 #if (ETM_PROTOCOL == 1)
1022 tm_return->status = -ETM_OK;
1023 #else
1024 tm_return->status = E_OK;
1025 #endif
1026 }
1027 break;
1028 }
1029
1030
1031 case DRP_IQMC:
1032 {
1033 error = drp_iqmc_calib(prim->u.tm_params.value, &drp_sw_data_calib);
1034 if(error < 0)
1035 {
1036 #if (ETM_PROTOCOL == 1)
1037 tm_return->status = -ETM_FATAL;
1038 #else
1039 tm_return->status = E_INVAL;
1040 #endif
1041 }
1042 else
1043 {
1044 #if (ETM_PROTOCOL == 1)
1045 tm_return->status = -ETM_OK;
1046 #else
1047 tm_return->status = E_OK;
1048 #endif
1049 }
1050 break;
1051 }
1052
1053
1054 case DRP_MIXER_POLE:
1055 {
1056 error =drp_mixer_pole_calib(prim->u.tm_params.value, &drp_sw_data_calib);
1057 if(error < 0)
1058 {
1059 #if (ETM_PROTOCOL == 1)
1060 tm_return->status = -ETM_FATAL;
1061 #else
1062 tm_return->status = E_INVAL;
1063 #endif
1064 }
1065 else
1066 {
1067 #if (ETM_PROTOCOL == 1)
1068 tm_return->status = -ETM_OK;
1069 #else
1070 tm_return->status = E_OK;
1071 #endif
1072 }
1073 break;
1074 }
1075
1076 case DRP_SCF_POLE:
1077 {
1078 error = drp_scf_pole_calib(prim->u.tm_params.value, &drp_sw_data_calib);
1079 if(error < 0)
1080 {
1081 #if (ETM_PROTOCOL == 1)
1082 tm_return->status = -ETM_FATAL;
1083 #else
1084 tm_return->status = E_INVAL;
1085 #endif
1086 }
1087 else
1088 {
1089 #if (ETM_PROTOCOL == 1)
1090 tm_return->status = -ETM_OK;
1091 #else
1092 tm_return->status = E_OK;
1093 #endif
1094 }
1095 break;
1096 }
1097
1098
1099 case DRP_AFE_GAIN_1:
1100 {
1101 error = drp_afe_gain_calib1 (prim->u.tm_params.value, &drp_sw_data_calib);
1102 if(error < 0)
1103 {
1104 #if (ETM_PROTOCOL == 1)
1105 tm_return->status = -ETM_FATAL;
1106 #else
1107 tm_return->status = E_INVAL;
1108 #endif
1109 }
1110 else
1111 {
1112 #if (ETM_PROTOCOL == 1)
1113 tm_return->status = -ETM_OK;
1114 #else
1115 tm_return->status = E_OK;
1116 #endif
1117 }
1118 break;
1119 }
1120
1121
1122 case DRP_AFE_GAIN_2:
1123 {
1124 error = drp_afe_gain_calib2 (prim->u.tm_params.value, &drp_sw_data_calib);
1125 if(error < 0)
1126 {
1127 #if (ETM_PROTOCOL == 1)
1128 tm_return->status = -ETM_FATAL;
1129 #else
1130 tm_return->status = E_INVAL;
1131 #endif
1132 }
1133 else
1134 {
1135 #if (ETM_PROTOCOL == 1)
1136 tm_return->status = -ETM_OK;
1137 #else //OP_L1_STANDALONE == 1
1138 tm_return->status = E_OK;
1139 #endif
1140 }
1141 break;
1142 }
1143
1144
1145
1146 case DRP_WRITE_TO_FLASH:
1147 {
1148 #if (OP_L1_STANDALONE ==0)
1149 // Call function to load data sw from FFS to SRM TBD Use the new Function
1150 error = drp_sw_data_calib_upload_to_ffs(&drp_sw_data_calib);
1151
1152 // TBD the followign immediate error handling can be removed once the PS related FFS functionality is in.
1153 if (error < 0)
1154 {
1155 #if (ETM_PROTOCOL == 1)
1156 tm_return->status = -ETM_NOSYS;
1157 #else
1158 tm_return->status = E_NOSYS;//OMAPS00090550
1159 #endif
1160 return;
1161 }
1162
1163 #else // OP_L1_STANDALONE
1164
1165 if(error < 0)
1166 {
1167 #if (ETM_PROTOCOL == 1)
1168 tm_return->status = -ETM_FATAL;
1169 #else
1170 tm_return->status = E_INVAL;
1171 #endif
1172 }
1173 else
1174 {
1175 #if (ETM_PROTOCOL == 1)
1176 tm_return->status = -ETM_OK;
1177 #else
1178 tm_return->status = E_OK;
1179 #endif
1180 }
1181
1182 #endif //OP_L1_STANDALONE
1183 break;
1184 }
1185
1186 default:
1187 {
1188 // nothing to do now.
1189 }
1190 } // end switch
1191 #if 0
1192 // GPIO47 = 1
1193 ptr_gpio = (UINT16*)GPIO2_LATCH_OUT;
1194 temp16 = *ptr_gpio;
1195 temp16 &= ~(0x8000);
1196 *ptr_gpio = temp16;
1197 #endif
1198
1199 }
1200
1201 #endif //L1_DRP
1202
1203
1204 765
1205 void l1tm_rx_param_read(T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return) 766 void l1tm_rx_param_read(T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return)
1206 { 767 {
1207 volatile UWORD16 value; 768 volatile UWORD16 value;
1208 769
3285 { 2846 {
3286 Cust_tm_tpu_table_read(tm_return, prim->u.tm_table.index); 2847 Cust_tm_tpu_table_read(tm_return, prim->u.tm_table.index);
3287 } 2848 }
3288 #endif // (CODE_VERSION != SIMULATION) 2849 #endif // (CODE_VERSION != SIMULATION)
3289 2850
3290 #if (L1_TPU_DEV == 1)
3291 /*******************************************************************
3292 * l1tm_flexi_tpu_table_write
3293 *
3294 * DESCRIPTION: The function would be called by the switch case in the etm_rf.
3295 *******************************************************************/
3296 void l1tm_flexi_tpu_table_write(T_TESTMODE_PRIM * prim, T_TM_RETURN * tm_return)
3297 {
3298 Cust_tm_flexi_tpu_table_write(tm_return,
3299 prim->u.tm_table16.index,
3300 prim->str_len_in_bytes - 1, // subtract 8-bit index
3301 prim->u.tm_table16.table);
3302 }
3303
3304 /*******************************************************************
3305 * l1tm_flexi_tpu_table_read
3306 *
3307 * DESCRIPTION: The function would be called by the switch case in the etm_rf.
3308 *******************************************************************/
3309 void l1tm_flexi_tpu_table_read (T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return)
3310 {
3311 Cust_tm_flexi_tpu_table_read(tm_return, prim->u.tm_table16.index);
3312 }
3313
3314 //Flexi ABB Delays
3315 /*******************************************************************
3316 * l1tm_flexi_abb_write
3317 *
3318 * DESCRIPTION: The function would be called by the switch case in the etm_rf.
3319 *******************************************************************/
3320 void l1tm_flexi_abb_write(T_TESTMODE_PRIM * prim, T_TM_RETURN * tm_return)
3321 {
3322 Cust_tm_flexi_abb_write(tm_return,
3323 prim->u.tm_table16.index,
3324 prim->str_len_in_bytes - 1, // subtract 8-bit index
3325 prim->u.tm_table16.table);
3326 }
3327
3328 /*******************************************************************
3329 * l1tm_flexi_abb_read
3330 *
3331 * DESCRIPTION: The function would be called by the switch case in the etm_rf.
3332 *******************************************************************/
3333 void l1tm_flexi_abb_read (T_TESTMODE_PRIM *prim, T_TM_RETURN *tm_return)
3334 {
3335 Cust_tm_flexi_abb_read(tm_return, prim->u.tm_table16.index);
3336 }
3337
3338
3339
3340 #endif // Flexible TPU
3341 2851
3342 /*------------------------------------------------------------------*/ 2852 /*------------------------------------------------------------------*/
3343 /* l1tm_PRBS1_generate() */ 2853 /* l1tm_PRBS1_generate() */
3344 /*------------------------------------------------------------------*/ 2854 /*------------------------------------------------------------------*/
3345 /* */ 2855 /* */