static int __init bcmpmu_init_platform_hw(struct bcmpmu *bcmpmu) { int i; printk(KERN_INFO "%s: called.\n", __func__); for (i = 0; i < ARRAY_SIZE(bcmpmu_client_devices); i++) bcmpmu_client_devices[i]->dev.platform_data = bcmpmu; platform_add_devices(bcmpmu_client_devices, ARRAY_SIZE(bcmpmu_client_devices)); if (get_chip_version() == CAPRI_A2 && bcmpmu->pmu_rev == BCMPMU_REV_B0) platform_device_register(&boost_device_5v); return 0; }
static void get_md_postfix(int md_id, char k[], char buf[], char buf_ex[]) { // name format: modem_X_YY_K_Ex.img int X, Ex; char YY_K[IMG_POSTFIX_LEN]; unsigned int feature_val = 0; if ((md_id<0) || (md_id>MAX_MD_NUM)) { CCCI_UTIL_ERR_MSG("wrong MD ID to get postfix %d\n", md_id); return; } // X X = md_id + 1; // YY_ YY_K[0] = '\0'; //#ifndef Flyme_EDIT //#[email protected] for load modem firmware by hardware info feature_val = mz_get_operator_type(); CCCI_UTIL_INF_MSG("mz_get_operator_type = 0x%x\n",feature_val); if (IS_LWG(feature_val)){ CCCI_UTIL_INF_MSG("modem type is china unicom\n"); feature_val = modem_lwg; }else if (IS_LTG(feature_val)){ CCCI_UTIL_INF_MSG("modem type is china mobile\n"); feature_val = modem_ltg; }else { CCCI_UTIL_INF_MSG("modem type is public\n"); switch(md_id) { case MD_SYS1: feature_val = get_modem_support_cap(MD_SYS1); break; case MD_SYS2: feature_val = get_modem_support_cap(MD_SYS2); break; case MD_SYS5: feature_val = get_modem_support_cap(MD_SYS5); break; default: CCCI_UTIL_ERR_MSG("request MD ID %d not supported\n", md_id); break; } } //#endif /*Flyme_EDIT*/ if((feature_val==0) || (feature_val>=MAX_IMG_NUM)) { CCCI_UTIL_ERR_MSG("request MD type %d not supported\n", feature_val); feature_val = md_type_invalid; } // K if(k == NULL) snprintf(YY_K, IMG_POSTFIX_LEN, "_%s_n", type_str[feature_val]); else snprintf(YY_K, IMG_POSTFIX_LEN, "_%s_%s", type_str[feature_val], k); // [_Ex] Get chip version #if 0 if(get_chip_version() == CHIP_SW_VER_01) Ex = 1; else if(get_chip_version() == CHIP_SW_VER_02) Ex = 2; #else Ex = 1; #endif // Gen post fix if(buf) { snprintf(buf, IMG_POSTFIX_LEN, "%d%s", X, YY_K); CCCI_UTIL_INF_MSG("MD%d image postfix=%s\n", md_id+1, buf); } if(buf_ex) { snprintf(buf_ex, IMG_POSTFIX_LEN, "%d%s_E%d", X, YY_K, Ex); CCCI_UTIL_INF_MSG("MD%d image postfix=%s\n", md_id+1, buf_ex); } }
static kal_int32 gt818_downloader_probe( kal_uint16 cur_ver, kal_uint8 *firmware_ptr ) { //TODO: process file //struct file *fp; kal_uint32 rlen; kal_uint16 length; kal_uint16 retry = 0; FS_HANDLE handle; int ret = 0; ctp_firmware_info_t *fw_info = (ctp_firmware_info_t *)firmware_ptr; unsigned char *data_ptr = &(fw_info->data); kal_wchar CTP_FIRMWARE_PATH[64]; kal_int16 drv_letter; kal_bool delete_firmware = KAL_FALSE; CTP_DWN_DEBUG_LINE_TRACE(); length = 0; drv_letter = FS_GetDrive(FS_DRIVE_V_NORMAL, 2, FS_DRIVE_I_SYSTEM | FS_DRIVE_V_NORMAL); // phone memory kal_wsprintf( CTP_FIRMWARE_PATH, "%c:\\%s", drv_letter, GT818_FW_STRING ); ret = FS_CheckFile(CTP_FIRMWARE_PATH); if(ret < 0) { drv_letter = FS_GetDrive( FS_DRIVE_V_REMOVABLE, 1, FS_NO_ALT_DRIVE ); //SD Card kal_wsprintf( CTP_FIRMWARE_PATH, "%c:\\%s", drv_letter, GT818_FW_STRING ); } else { delete_firmware = KAL_TRUE; // need delete firmware after update } handle = FS_Open( CTP_FIRMWARE_PATH, FS_READ_ONLY ); if ( handle >= 0 ) // file system first { do { rlen = 0; ret = FS_Read( handle, &data_ptr[length], 256, &rlen ); length += rlen; if ( rlen != 256 ) { CTP_DWN_DEBUG_LINE_TRACE(); break; } else { drv_trace1( TRACE_GROUP_7, CTP_GOODIX_DWN_READ_IMAGE_TRACE, rlen); } } while ( 1 ); FS_Close( handle ); } else { const int MAGIC_NUMBER_1 = 0x4D454449; const int MAGIC_NUMBER_2 = 0x4154454B; unsigned short checksum = 0; int i; drv_trace2( TRACE_GROUP_7, CTP_GOODIX_DWN_MAGIC_NUM_TRACE, fw_info->magic_number_1, fw_info->magic_number_2 ); drv_trace2( TRACE_GROUP_7, CTP_GOODIX_DWN_MAGIC_NUM_TRACE, MAGIC_NUMBER_1, MAGIC_NUMBER_2 ); drv_trace2( TRACE_GROUP_7, CTP_GOODIX_DWN_VERSION_TRACE, cur_ver, fw_info->version ); drv_trace2( TRACE_GROUP_7, CTP_GOODIX_DWN_IMAGE_INFO_TRACE, fw_info->length, fw_info->checksum ); if ( fw_info->magic_number_1 != MAGIC_NUMBER_1 && fw_info->magic_number_2 != MAGIC_NUMBER_2 ) { CTP_DWN_DEBUG_LINE_TRACE(); goto exit_downloader; } if ( cur_ver >= fw_info->version ) { CTP_DWN_DEBUG_LINE_TRACE(); goto exit_downloader; } // check if it is the same chip version if ( get_chip_version( cur_ver ) != get_chip_version( fw_info->version ) ) { CTP_DWN_DEBUG_LINE_TRACE(); goto exit_downloader; } for ( i = 0 ; i < fw_info->length ; i++ ) checksum += data_ptr[i]; checksum = checksum%0xFFFF; if ( checksum != fw_info->checksum ) { CTP_DWN_DEBUG_LINE_TRACE(); goto exit_downloader; } length = fw_info->length; } while ( gt818_update_proc( data_ptr, length ) == 0 && retry < 2 ) retry++; if ( (handle >= 0) && delete_firmware) //delete firmware when firmware in phone memory FS_Delete( CTP_FIRMWARE_PATH ); //free_ctrl_buffer( nvram ); ret = 1; exit_downloader: return ret; }
void get_ext_md_post_fix(int md_id, char buf[], char buf_ex[]) { // name format: modem_X_YYY_Z_Ex.img int X, Ex; char YYY[16]; unsigned int feature_val = 0; if (md_id < MD_SYS5) { printk("[EEMCS/PLAT] [Error]get_ext_md_post_fix: invalid md_id=%d\n", md_id); return; } // X X = md_id + 1; // DFO start ------------------- // YYY YYY[0] = '\0'; switch(md_id) { case MD_SYS5: feature_val = ext_md_support[MD_SYS5-MD_EXT1]; break; default: printk("[EEMCS/PLAT] [Error]get_ext_md_post_fix: invalid md_id=%d\n", md_id); break; } switch(feature_val) { case modem_2g: snprintf(YYY, 16, "_2g_n"); break; case modem_3g: snprintf(YYY, 16, "_3g_n"); break; case modem_wg: snprintf(YYY, 16, "_wg_n"); break; case modem_tg: snprintf(YYY, 16, "_tg_n"); break; case modem_lwg: snprintf(YYY, 16, "_lwg_n"); break; case modem_ltg: snprintf(YYY, 16, "_ltg_n"); break; case modem_sglte: snprintf(YYY, 16, "_sglte_n"); break; default: printk("[EEMCS/PLAT] [Error]get_ext_md_post_fix: invalid feature=%d\n", feature_val); break; } // DFO end --------------------- // [_Ex] Get chip version #if 0 if(get_chip_version() == CHIP_SW_VER_01) Ex = 1; else if(get_chip_version() == CHIP_SW_VER_02) Ex = 2; #else Ex = 1; #endif // Gen post fix if(buf) { snprintf(buf, 20, "%d%s", X, YYY); printk("[EEMCS/PLAT] MD%d image postfix=%s\n", md_id, buf); } if(buf_ex) { snprintf(buf_ex, 12, "%d%s_E%d", X, YYY, Ex); printk("[EEMCS/PLAT] MD%d image postfix=%s\n", md_id, buf_ex); } }
static void get_md_postfix(int md_id, char k[], char buf[], char buf_ex[]) { /* name format: modem_X_YY_K_Ex.img */ int X, Ex; char YY_K[IMG_POSTFIX_LEN]; unsigned int feature_val = 0; if ((md_id < 0) || (md_id > MAX_MD_NUM)) { CCCI_UTIL_ERR_MSG_WITH_ID(md_id, "wrong MD ID to get postfix\n"); return; } /* X */ X = md_id + 1; /* YY_ */ YY_K[0] = '\0'; switch (md_id) { case MD_SYS1: feature_val = get_modem_support_cap(MD_SYS1); break; case MD_SYS2: feature_val = get_modem_support_cap(MD_SYS2); break; case MD_SYS5: feature_val = get_modem_support_cap(MD_SYS5); break; default: CCCI_UTIL_ERR_MSG_WITH_ID(md_id, "request MD ID %d not supported\n", md_id); break; } if ((feature_val == 0) || (feature_val >= MAX_IMG_NUM)) { CCCI_UTIL_ERR_MSG_WITH_ID(md_id, "request MD type %d not supported\n", feature_val); feature_val = md_type_invalid; } /* K */ if (k == NULL) snprintf(YY_K, IMG_POSTFIX_LEN, "_%s_n", type_str[feature_val]); else snprintf(YY_K, IMG_POSTFIX_LEN, "_%s_%s", type_str[feature_val], k); /* [_Ex] Get chip version */ #if 0 if (get_chip_version() == CHIP_SW_VER_01) Ex = 1; else if (get_chip_version() == CHIP_SW_VER_02) Ex = 2; #else Ex = 1; #endif /* Gen post fix */ if (buf) { snprintf(buf, IMG_POSTFIX_LEN, "%d%s", X, YY_K); CCCI_UTIL_DBG_MSG_WITH_ID(md_id, "MD%d image postfix=%s\n", md_id + 1, buf); } if (buf_ex) { snprintf(buf_ex, IMG_POSTFIX_LEN, "%d%s_E%d", X, YY_K, Ex); CCCI_UTIL_DBG_MSG_WITH_ID(md_id, "MD%d image postfix=%s\n", md_id + 1, buf_ex); } }
void get_ext_md_post_fix(int md_id, char buf[], char buf_ex[]) { // name format: modem_X_YYY_Z_Ex.img int X, Ex; char YYY[8]; #if defined(DFO_FEATURE_EN) unsigned int feature_val = 0; #endif if (md_id < MD_SYS5) { printk("[EEMCS]wrong MD ID to get postfix %d\n", md_id); return; } // X X = md_id + 1; #if defined(DFO_FEATURE_EN) // DFO start ------------------- // YYY YYY[0] = '\0'; switch(md_id) { case MD_SYS5: feature_val = ext_md_support[MD_SYS5-MD_EXT1]; break; default: printk("[EEMCS]request MD ID %d not supported\n", md_id); break; } switch(feature_val) { case modem_lwg: snprintf(YYY, 8, "_lwg_n"); break; case modem_ltg: snprintf(YYY, 8, "_ltg_n"); break; default: printk("[EEMCS]request MD type %d not supported\n", feature_val); break; } // DFO end --------------------- #else // Static start ------------------- // YYY snprintf(YYY, 8, "_lwg_n"); // Static end --------------------- #endif // [_Ex] Get chip version #if 0 if(get_chip_version() == CHIP_SW_VER_01) Ex = 1; else if(get_chip_version() == CHIP_SW_VER_02) Ex = 2; #else Ex = 1; #endif // Gen post fix if(buf) { snprintf(buf, 12, "%d%s", X, YYY); printk("[EEMCS]MD%d image postfix=%s\n", md_id, buf); } if(buf_ex) { snprintf(buf_ex, 12, "%d%s_E%d", X, YYY, Ex); printk("[EEMCS]MD%d image postfix=%s\n", md_id, buf_ex); } }