MSM RF Driver Configuration

https://blog.csdn.net/green1900/article/details/46443285

1、原理

MSM/MDM+WTR RF Frontend(MIPI)结构

2、MIPI ASM Customization

Reference

80-NG377-1_A_MIPI_Device_Customization.pdf

添加或者修改天线开关设备。

2.1 Step1 ASM设备驱动

文件路径:/modem_proc/rfdevices_asm/src,可以完成如下工作:

1、为已经存在的ASM设备更改配置

比如在rfdevice_asm_cxa4416gc_data_ag.h和rfdevice_asm_cxa4416gc_data_ag中为cxa4416gc修改配置。

2、添加一个新的ASM设备。

为一个新ASM设备添加.h和.cpp文件,.h和.cpp文件内容可以参考已经存在的其他设备的文件内容。

zhe.yuan@Develop:~/project/mdm9x25_3030/MDM9X25/modem_proc/rfdevice_asm/src$ ls -l

rfdevice_asm_common.cpp

rfdevice_asm_cxa4416gc_data_ag.cpp

rfdevice_asm_cxa4416gc_data_ag.h

rfdevice_asm_cxm3617er_data_ag.cpp

rfdevice_asm_cxm3617er_data_ag.h

rfdevice_asm_cxm3632er_data_ag.cpp

rfdevice_asm_cxm3632er_data_ag.h

rfdevice_asm_cxm3637ak_data_ag.cpp

rfdevice_asm_cxm3637ak_data_ag.h

rfdevice_asm_cxm3637k_data_ag.cpp

rfdevice_asm_cxm3637k_data_ag.h

rfdevice_asm_cxm3640k_data_ag.cpp

rfdevice_asm_cxm3640k_data_ag.h

rfdevice_asm_cxm3641er_data_ag.cpp

rfdevice_asm_cxm3641er_data_ag.h

rfdevice_asm_cxm3641k_data_ag.cpp

rfdevice_asm_cxm3641k_data_ag.h

rfdevice_asm_cxm3642k_data_ag.cpp

rfdevice_asm_cxm3642k_data_ag.h

rfdevice_asm_cxm3643k_es02_data_ag.cpp

rfdevice_asm_cxm3643k_es02_data_ag.h

rfdevice_asm_cxm3643k_es03_data_ag.cpp

rfdevice_asm_cxm3643k_es03_data_ag.h

rfdevice_asm_cxm3654ur_data_ag.cpp

rfdevice_asm_cxm3654ur_data_ag.h

rfdevice_asm_cxm3655k_data_ag.cpp

rfdevice_asm_cxm3655k_data_ag.h

rfdevice_asm_cxm3656k_data_ag.cpp

rfdevice_asm_cxm3656k_data_ag.h

rfdevice_asm_cxm3657k_data_ag.cpp

rfdevice_asm_cxm3657k_data_ag.h

rfdevice_asm_cxm3807k_data_ag.cpp

rfdevice_asm_cxm3807k_data_ag.h

rfdevice_asm_data.cpp

rfdevice_asm_dgm366_data_ag.cpp

rfdevice_asm_dgm366_data_ag.h

rfdevice_asm_factory_ag.cpp

rfdevice_asm_hfqswejua224_data_ag.cpp

rfdevice_asm_hfqswejua224_data_ag.h

rfdevice_asm_lmsp2pqd_g22_data_ag.cpp

rfdevice_asm_lmsp2pqd_g22_data_ag.h

rfdevice_asm_lmsp32qp_e10_data_ag.cpp

rfdevice_asm_lmsp32qp_e10_data_ag.h

rfdevice_asm_lmsp32qp_f03_data_ag.cpp

rfdevice_asm_lmsp32qp_f03_data_ag.h

rfdevice_asm_lmsp32qq_f31_data_ag.cpp

rfdevice_asm_lmsp32qq_f31_data_ag.h

rfdevice_asm_lmspfbqh_f65_data_ag.cpp

rfdevice_asm_lmspfbqh_f65_data_ag.h

rfdevice_asm_murata_hfqswkcua212_20c_data_ag.cpp

rfdevice_asm_murata_hfqswkcua212_20c_data_ag.h

rfdevice_asm_murata_hfqswkcua212_23e_data_ag.cpp

rfdevice_asm_murata_hfqswkcua212_23e_data_ag.h

rfdevice_asm_rfmd1498a_0x28_data_ag.cpp

rfdevice_asm_rfmd1498a_0x28_data_ag.h

rfdevice_asm_sky13473_data_ag.cpp

rfdevice_asm_sky13473_data_ag.h

rfdevice_asm_sky13488_data_ag.cpp

rfdevice_asm_sky13488_data_ag.h

rfdevice_asm_xmssgf3g0pa_009_data_ag.cpp

rfdevice_asm_xmssgf3g0pa_009_data_ag.h

(1)在.cpp文件中为ASM on/off/trigger操作定义寄存器配置

#define RFDEVICE_ASM_SKY13488_NUM_PORTS 12

#define RFDEVICE_ASM_SKY13488_ASM_ON_NUM_REGS 1

static uint8 rfdevice_asm_sky13488_asm_on_regs[RFDEVICE_ASM_SKY13488_ASM_ON_NUM_REGS] =  {0x00, };

static int16 rfdevice_asm_sky13488_asm_on_data[RFDEVICE_ASM_SKY13488_NUM_PORTS][RFDEVICE_ASM_SKY13488_ASM_ON_NUM_REGS] =

{

  { /* PORT NUM: 1 */

    0XA, 

  },

  { /* PORT NUM: 2 */

    0X8, 

  },

  { /* PORT NUM: 3 */

    0X4, 

  },

  { /* PORT NUM: 4 */

    0X5, 

  },

  { /* PORT NUM: 5 */

    0X6, 

  },

  { /* PORT NUM: 6 */

    0X7, 

  },

  { /* PORT NUM: 7 */

    0X9, 

  },

  { /* PORT NUM: 8 */

    0XB, 

  },

  { /* PORT NUM: 9 */

    0XC, 

  },

  { /* PORT NUM: 10 */

    0X1, 

  },

  { /* PORT NUM: 11 */

    0X2,

  },

  { /* PORT NUM: 12 */

    0X3, 

  },

};

static int16 rfdevice_asm_sky13488_asm_off_data[RFDEVICE_ASM_SKY13488_NUM_PORTS][RFDEVICE_ASM_SKY13488_ASM_OFF_NUM_REGS] =

{

  { /* PORT NUM: 1 */

    0x00, 

  },

  { /* PORT NUM: 12 */

    0x00, 

  },

};

static int16 rfdevice_asm_sky13488_asm_trigger_data[RFDEVICE_ASM_SKY13488_NUM_PORTS][RFDEVICE_ASM_SKY13488_ASM_TRIGGER_NUM_REGS] =

{

  { /* PORT NUM: 1 */

    0x01, 

  },

  { /* PORT NUM: 12 */

    0x01, 

  },

};

注意:RFDEVICE_ASM_SKY13488_NUM_PORTS是端口的数量,不同的端口对应不同的频段开关。该数量与rfdevice_asm_sky13488_asm_*_data列表中的寄存器数值是一致的。比如该值设置为12,那么与rfdevice_asm_sky13488_asm_*_data肯定应该有12个数值。

以SKY13488为例,该芯片的spec会给出真值表,列出不同band对应的寄存器值:

表格 1 SKY13488真值表

这些值转换成16进制后,与代码modem_proc/rfdevice_asm/src/rfdevice_asm_sky13488_data_ag.cpp中rfdevice_asm_sky13488_asm_on_data[](见上面)对应起来:

表格 2 端口与真值对应关系表

这样在代码里面,就可以为gsm、wcdma、lte。。。来选择ASM设备端口了

表格 3 ASM设备GSM配置表

(2)在.cpp文件中为ASM设备配置正确的MID、PID和product revision

boolean rfdevice_asm_sky13488_data_ag::device_info_get( rfdevice_asm_info_type *asm_info )

{

  boolean ret_val = FALSE;

  if ( NULL == asm_info )

  {

    return FALSE;

  }

  else

  {

    asm_info->mfg_id = 0x1A5;

    asm_info->prd_id = 0x5F;

    asm_info->prd_rev = 0;

    asm_info->num_ports = RFDEVICE_ASM_SKY13488_NUM_PORTS;

    ret_val = TRUE;

  }

  return ret_val;

}

MID即MANUFACTURER ID,PID即PRODUCT ID,由芯片spec查到。

2.2 Step2 更新FTM中ASM信息

在文件rfdebice_asm_factory_ag.cpp中:

1、为新添加的ASM设备include进.h文件

2、为新添加的ASM设备更改或添加程序

主要是MID、PID和product revision

#include "rfdevice_asm_cxm3657k_data_ag.h"

#include "rfdevice_asm_cxm3632er_data_ag.h"

#include "rfdevice_asm_cxm3617er_data_ag.h"

#include "rfdevice_asm_cxm3807k_data_ag.h"

#include "rfdevice_asm_dgm366_data_ag.h"

#include "rfdevice_asm_hfqswejua224_data_ag.h"

#include "rfdevice_asm_murata_hfqswkcua212_20c_data_ag.h"

#include "rfdevice_asm_murata_hfqswkcua212_23e_data_ag.h"

#include "rfdevice_asm_sky13488_data_ag.h"

#include "rfdevice_asm_sky13473_data_ag.h"

rfdevice_asm_data* rfdevice_asm_data_create (uint16 mfg_id, uint8 prd_id, uint8 prd_rev)

{

  rfdevice_asm_data * asm_data = NULL;

  if ( mfg_id ==  0x020C && prd_id == 0x06  && prd_rev == 3)

  {

    asm_data = rfdevice_asm_lmspfbqh_f65_data_ag::get_instance();

  }

.

.

.

  else if ( mfg_id ==  0x01A5 && prd_id == 0x5F  && prd_rev == 0)

  {

asm_data = rfdevice_asm_sky13488_data_ag::get_instance();

  }

  else if ( mfg_id ==  0x01A5 && prd_id == 0x45  && prd_rev == 0)

  {

asm_data = rfdevice_asm_sky13473_data_ag::get_instance();

  }  

  return asm_data;

}

2.3 Step3更新common devices list

在RFC common文件中,为你的ASM设备更新信息,比如:在rfc_wtr1625_naeu_cmn_ag.cpp中:

rfc_device_cfg_info_type rfc_wtr1625_naeu_cmn_devices_list[] = 

{

.

.

.

  { /*Device: ASM_12T_9T */ 

    RFDEVICE_ASM, /* DEVICE_TYPE */ 

    GEN_ASM /* ASM_12T_9T */, /* DEVICE_NAME */ 

    0, /* DEVICE_TYPE_INSTANCE */ 

    RFDEVICE_COMM_PROTO_RFFE, /* DEVICE_COMM_PROTOCOL */ 

    {    1,0 /* 0 not specified */,}, /* DEVICE_COMM_BUS */ 

    0x01A5, /* MANUFACTURER_ID */ 

    0x5F, /* PRODUCT_ID */ 

    0, /* PRODUCT_REV */ 

    0xB, /* DEFAULT USID RANGE START */

    0xB, /* DEFAULT USID RANGE END */

    0xA, /* ASSIGNED_USID */

    0xA, /* RFFE_GROUP_ID */ 

    FALSE, /* INIT */ 

    RFC_INVALID_PARAM, /* ASSOCIATED_DAC */ 

    RFDEVICE_TYPE_INVALID, /* ASSOCIATED_DEVICE_TYPE */ 

    0 /*Warning: Not specified*/, /* ASSOCIATED_DEVICE_TYPE_INSTANCE */ 

  }, /* END - Device: ASM_12T_9T */ 

};

2.4 Step4匹配ASM端口

在文件rfc_wtr1625_naeu_<tech>_config_data_ag.c中,为不同的Tech/Mode/Band/匹配对应的ASM端口

例如rfc_wtr1625_naeu_gsm_config_data_ag.c中,为gsm 850 rx配置:

查询sky13488 spec得到band真值表:

查询设备驱动rfdevice_asm_sky13488_data_ag.cpp得到真值与port对应表:

修改代码:

3、MIPI PA Customization

Reference

80-NG377-1_A_MIPI_Device_Customization.pdf

添加或者修改PA设备。

3.1 Step1 PA设备驱动

文件路径/modem_proc/rfdevices_pa/src,可以完成如下工作::

1、为已经存在的PA设备更改配置,在其对应文件中修改。

如:rfdevice_pa_acpm_7600_data_ag.h和rfdevice_pa_acpm_7600_data_ag.cpp

2、添加一个新的PA设备

为一个新PA设备添加.h和.cpp文件,.h和.cpp文件内容可以参考已经存在的其他设备的文件。

zhe.yuan@Develop:~/project/mdm9x25_3030/MDM9X25/modem_proc/rfdevice_pa/src$ ll

rfdevice_pa_2g_rf8108_0x04_20_data_ag.cpp

rfdevice_pa_2g_rf8108_0x04_20_data_ag.h

rfdevice_pa_acpm_7600_data_ag.cpp

rfdevice_pa_acpm_7600_data_ag.h

rfdevice_pa_acpm_7620_data_ag.cpp

rfdevice_pa_acpm_7620_data_ag.h

rfdevice_pa_acpm_7650_data_ag.cpp

rfdevice_pa_acpm_7650_data_ag.h

rfdevice_pa_acpm_9301_data_ag.cpp

rfdevice_pa_acpm_9301_data_ag.h

rfdevice_pa_acpm_9340_data_ag.cpp

rfdevice_pa_acpm_9340_data_ag.h

rfdevice_pa_acpm_9341_data_ag.cpp

rfdevice_pa_acpm_9341_data_ag.h

rfdevice_pa_acpm_9407_data_ag.cpp

rfdevice_pa_acpm_9407_data_ag.h

rfdevice_pa_acpm_9411_data_ag.cpp

rfdevice_pa_acpm_9411_data_ag.h

rfdevice_pa_acpm_9413_data_ag.cpp

rfdevice_pa_acpm_9413_data_ag.h

rfdevice_pa_acpm_9417_data_ag.cpp

rfdevice_pa_acpm_9417_data_ag.h

rfdevice_pa_acpm_9420_data_ag.cpp

rfdevice_pa_acpm_9420_data_ag.h

rfdevice_pa_acpm_9428_data_ag.cpp

rfdevice_pa_acpm_9428_data_ag.h

rfdevice_pa_acpm_9512_data_ag.cpp

rfdevice_pa_acpm_9512_data_ag.h

rfdevice_pa_acpm_9513_data_ag.cpp

rfdevice_pa_acpm_9513_data_ag.h

rfdevice_pa_acpm_9517_data_ag.cpp

rfdevice_pa_acpm_9517_data_ag.h

rfdevice_pa_common.cpp

rfdevice_pa_data.cpp

rfdevice_pa_factory_ag.cpp

rfdevice_pa_rfmd_7389_data_ag.cpp

rfdevice_pa_rfmd_7389_data_ag.h

rfdevice_pa_rfmd_7940_data_ag.cpp

rfdevice_pa_rfmd_7940_data_ag.h

rfdevice_pa_rfmd_7941_data_ag.cpp

rfdevice_pa_rfmd_7941_data_ag.h

rfdevice_pa_rfmd_7941_es02_data_ag.cpp

rfdevice_pa_rfmd_7941_es02_data_ag.h

rfdevice_pa_rfmd_8007_data_ag.cpp

rfdevice_pa_rfmd_8007_data_ag.h

rfdevice_pa_rfmd_8012a_data_ag.cpp

rfdevice_pa_rfmd_8012a_data_ag.h

rfdevice_pa_rfmd_8013a_data_ag.cpp

rfdevice_pa_rfmd_8013a_data_ag.h

rfdevice_pa_rfmd_8013_data_ag.cpp

rfdevice_pa_rfmd_8013_data_ag.h

rfdevice_pa_rfmd_8014_data_ag.cpp

rfdevice_pa_rfmd_8014_data_ag.h

rfdevice_pa_rfmd_8017a_data_ag.cpp

rfdevice_pa_rfmd_8017a_data_ag.h

rfdevice_pa_rfmd_8017_data_ag.cpp

rfdevice_pa_rfmd_8017_data_ag.h

rfdevice_pa_rfmd_8020_data_ag.cpp

rfdevice_pa_rfmd_8020_data_ag.h

rfdevice_pa_rfmd_8021_data_ag.cpp

rfdevice_pa_rfmd_8021_data_ag.h

rfdevice_pa_sky_77629_51_data_ag.cpp

rfdevice_pa_sky_77629_51_data_ag.h

rfdevice_pa_sky_77629_data_ag.cpp

rfdevice_pa_sky_77629_data_ag.h

rfdevice_pa_sky_77772_data_ag.cpp

rfdevice_pa_sky_77772_data_ag.h

rfdevice_pa_sky_77773_data_ag.cpp

rfdevice_pa_sky_77773_data_ag.h

rfdevice_pa_tqp_9051_data_ag.cpp

rfdevice_pa_tqp_9051_data_ag.h

在.cpp文件中为PA bias/range/on/off/trigger操作定义寄存器配置

在.cpp文件中为你的PA设备配置正确的MID、PID和product revision、PA范围

MID、PID可以从spec查到:

3.2 Step2更新FTM中PA信息

在文件rfdebice_pa_factory_ag.cpp中:

1、为新添加的PA设备include进.h文件

2、为新添加的PA设备更改或添加程序

3.3 Step3更新common devices list

在RFC common文件中,为你的PA设备更新信息,比如在rfc_wtr1605_na1_cmn_ag.cpp中:

3.4 Step4匹配PA端口

在rfc_wtr1605_na1_<tech>_config_data_ag.c中,为不同的Tech/Mode/Band/中匹配对应的PA端口

例如rfc_wtr1605_na1_wcdma_config_data_ag.c中,配置WCDMA B1 Tx0:

查询7600 spec得到band真值表:

查询设备驱动rfdevice_pa_acpm_7600_data_ag.cpp得到真值与port对应表:

修改代码:

4、MSM8974/MDM9x25 RFC Code Checklist

References

80-NA157-179_A_MSM8974_MDM9x25_RFC_Code_Customization_Checklist.pdf

4.1选择rf_card类型

RF卡有许多类型,不同的RF卡对应不同的device list。

rf_card文件夹路径MDM9X25/modem_proc/rfc_dime/rf_card,该路径下包含了所有用到的RF卡类型:

在代码编译时,所有的RF cards文件都会被编译,modem使用NV1878来决定实际使用哪个卡。NV1878数值与RF card类型的对应关系表在文件Rfc_hwid.h。在PFT1220Q项目中,NV1878值为207,所以RF卡类型应为RF_HW_WTR1625_NAEU ,对应源文件路径MDM9X25/modem_proc/rfc_dime/rf_card/rfc_wtr1625_naeu。注:NA是北美、EU是欧洲。

/* -------------------------------------------------------

** The RF Card Id used in the target

** Note: The Id needs to be sequential

** ------------------------------------------------------- */

typedef enum {

  RF_HW_UNDEFINED                         = (uint8)0,

  RF_TARGET_NONE                          = RF_HW_UNDEFINED,

  RF_HW_WTR1625_APAC_QFE_ASDIV            = (uint8)10,

  RF_HW_WTR1605_NA1_APT                   = (uint8)11,

  RF_HW_WTR1605_NA2_APT                   = (uint8)12,

  RF_HW_WTR1605_EU1_APT                   = (uint8)13,

  RF_HW_WTR1605_ATT_CA_APT                = (uint8)14,

  RF_HW_WTR1605_KR_CA_APT                 = (uint8)15,

  RF_HW_WTR1605_CMCC_APT                  = (uint8)16,

  RF_HW_WTR1605_APAC21_APT                = (uint8)17,

  RF_HW_WTR1605_APAC11_APT                = (uint8)18,

  RF_HW_WTR1625_NAEU_CA_LIQUID            = (uint8)19,

  RF_HW_WTR1625_SGLTE_QFE                 = (uint8)20,

  RF_HW_WTR1625_QFE2720_CA_NA             = (uint8)21,

  RF_HW_WTR1625_QFE2720_CA_EU             = (uint8)22,

  RF_HW_WTR1625_APAC_CA_B20               = (uint8)23,

  RF_HW_WTR1625_SGLTE                     = (uint8)24,

  RF_HW_WTR1625_CMCC_QFE                  = (uint8)25,

  RF_HW_WTR1605_VZ_SV_ET                  = (uint8)26,

  RF_HW_WTR1625_SVSG_QFE                  = (uint8)27,

  RF_HW_WTR1605_FLUID                     = (uint8)28,

  RF_HW_WTR1605_RP2                       = (uint8)29,

  RF_HW_WTR1605_NA1_ET121                 = (uint8)30,

  RF_HW_WTR1625_GLOBAL_CA_QFE             = (uint8)31,

  RF_HW_WTR1625_RP1                       = (uint8)32,

  RF_HW_WTR1625_SGLTE_QFE_TUNER           = (uint8)33,

  RF_HW_WTR1605_SGLTE_CMCC_4MODE          = (uint8)34,

  RF_HW_WTR1605_SGLTE_CMCC_3MODE          = (uint8)35,

  RF_HW_WTR1625_SGLTE_QFE1                = (uint8)36,

  RF_HW_WTR1625_SGLTE_QFE1_TUNER          = (uint8)37,

  RF_HW_WTR1625_VZ_SV1_F4                 = (uint8)38,

  RF_HW_WTR1605_NA1_APT_N5331             = (uint8)39,

  RF_HW_WTR1605_NA2_APT_N5331             = (uint8)40,

  RF_HW_WTR1605_EU1_APT_N5331             = (uint8)41,

  RF_HW_WTR1605_ATT_CA_ET                 = (uint8)42,

  RF_HW_WTR1605_EU_ET                     = (uint8)43,

  RF_HW_WTR1605_NA2_ET                    = (uint8)44,

  RF_HW_WTR1625_SV_DSDA_QFE               = (uint8)45,

  RF_HW_WTR1625_APAC                      = (uint8)46,

  RF_HW_WTR1625_SVSG_QFE_ASDIV            = (uint8)48,

  RF_HW_WTR1625_SVSG_QFE_ASDIV2           = (uint8)49,

  RF_HW_WTR1625_SG_DSDA_QFE_OMRD          = (uint8)50,

  RF_HW_WTR1605_SGLTE                     = (uint8)51,

  RF_HW_WTR1625_GLOBAL_CA_TP100_LATEST    = (uint8)52,

  RF_HW_WTR1625_VZ_SV1                    = (uint8)53,

  RF_HW_WTR1625_VZ_SV2                    = (uint8)54,

  RF_HW_WTR1625_GLOBAL_CA_TP100_2         = (uint8)55,

  RF_HW_WTR1625_GLOBAL_CA_TP100_3         = (uint8)56,

  RF_HW_WTR1625_GLOBAL_CA_TP100_4         = (uint8)57,

  RF_HW_WTR1625_GLOBAL_CA_TP100_4B        = (uint8)58,

  RF_HW_WTR1625_GLOBAL_CA_TP100_5         = (uint8)59,

  RF_HW_WTR1625_RP2                       = (uint8)60,

  RF_HW_WTR1625_NAEU_CA_SLTE              = (uint8)61,

  RF_HW_WTR1625_GLOBAL_CA_TP102_0         = (uint8)70,

  RF_HW_WTR1625_GLOBAL_CA_TP101_0         = (uint8)71,

  RF_HW_WTR1605_CHILE_RF360               = (uint8)72,

  RF_HW_WTR1605_CHILE_RF360_TDET          = (uint8)73,

  RF_HW_WTR1625_GLOBAL_CA_TP103_0         = (uint8)75,

  RF_HW_WTR1625_GLOBAL_CA_TP103_1         = (uint8)76,

  RF_HW_WTR1625_GLOBAL_CA_TP102_1         = (uint8)77,

  RF_HW_WTR1625_GLOBAL_CA_TP101_1         = (uint8)78,

  RF_HW_WTR1625_GLOBAL_CA_TP100_6         = (uint8)80,

  RF_HW_WTR1605_RP6                       = (uint8)81,

  RF_HW_WTR1605_RP7                       = (uint8)82,

  RF_HW_WTR1625_SGLTE_DSDA                = (uint8)124,

  RF_HW_WTR1605_SGLTE_DSDA                = (uint8)151,

  RF_HW_WTR1605_SGLTE2                    = (uint8)151,

  RF_HW_WTR1605_CTSV_SGLTE_DSDA_ASD       = (uint8)152,

  RF_HW_WGR7640                           = (uint8)174,

  RF_HW_WTR1605_VZ_SV_QFE2320             = (uint8)203,

  RF_HW_WTR1625_NAEU                      = (uint8)207,

  RF_HW_WTR1625_NAEU_CA                   = (uint8)246,

  RF_HW_WTR1625_APAC_CA                   = (uint8)247,

  RF_HW_WTR1605_VZ_SV_APT                 = (uint8)249,

  RF_HW_WTR1605_VZ_SV_APT_ASDIV           = (uint8)250,

  RF_HW_WTR1605_SGLTE_ASDIV               = (uint8)251,

  RF_HW_WTR1625_STP8962                   = (uint8)252,

  RF_HW_WTR1605_RP3                       = (uint8)253,

  /* Add any new HW ID before this line */

  RF_HW_MAX,

  RF_HW_DEFAULT = RF_HW_MAX, /* Default card for Off-Target Builds */

  RF_HW_EFS_CARD                          = (uint8)191, /* EFS Card */

} rf_hw_type;

4.2 MID、PID、USID

MANUFACTURER_ID、PRODUCT_ID、default USID是不同器件的编号,根据该ID可以区分不同的器件。在芯片驱动、rfc_wtr1625_naeu_cmn_devices_list、rfc_wtr1625_naeu_<tech>_config_data_ag.c中都需要为各个芯片设置。

例如PA8007,在MDM9X25/modem_proc/rfdevice_pa/src/rfdevice_pa_rfmd_8007_data_ag.cpp中,device_info_get():

MDM9X25/modem_proc/rfc_dime/rf_card/rfc_wtr1625_naeu/common/src/rfc_wtr1625_naeu_cmn_ag.cpp中,在rfc_wtr1625_naeu_cmn_devices_list中,

在Z:\mdm9x25_3030\MDM9X25\modem_proc\rfc_dime\rf_card\rfc_wtr1625_naeu\lte\src\rfc_wtr1625_naeu_lte_config_data_ag.c中:

注意确保rfc_wtr1625_naeu_cmn_ag.cpp中rfc_wtr1625_naeu_cmn_devices_list器件列表的器件与实际硬件电路设计一致。MIPI device信息,如MANUFACTURER_ID、PRODUCT_ID、default USID、ASSIGNED_USID需要根据实际使用的器件改动。详细方法可以参考《80-NG377-1 Presentation:MIPI Device Customization》。

注意:

1、MANUFACTURER_ID、PRODUCT_ID从芯片的spec中查到,例如:

2、ASSIGNED_USID为研发自己设定,需要注意相同MANUFACTURER_ID的不同Device,其PRODUCT_ID和DEVICE_TYPE_INSTANCE不同。

4.3 DEVICE_TYPE_INSTANCE

DEVICE_TYPE_INSTANCE参数用来标明电路板上相同类型设备的不同元器件。

如果板子上相同类型设备元器件的数目超过一个,比如PA、ASM、天线调节器。。。就用不同的ID来标记他们,如0、1、2。。。用来作为他们的DEVICE_TYPE_INSTANCE

注意:同一元器件的DEVICE_TYPE_INSTANCE在rfc_wtr1625_naeu_cmn_devices_list和rfc_wtr1625_naeu_<tech>_config_data_ag.c中要一样。比如B7 PA,在rfc_wtr1625_naeu_cmn_devices_list中DEVICE_TYPE_INSTANCE值为2:

rfc_wtr1625_naeu_lte_config_data_ag.c中DEVICE_TYPE_INSTANCE值也为2:

4.4 DEVICE_COMM_BUS

DEVICE_COMM_BUS的第一个参数用来指定连接到的MIPI device的MIPI RFFE bus。

0表示第一个RFFE bug,而2表示第二个。

该数值根据MIPI device的实际连线来确定。

4.5 删除用不到的device

如果QFE device(QFE1100/1101、QFE1510)在设计中没有使用,那么就将他们从device list中删除。其它device也一样,如果没有用到,就删除掉。比如PA、ASM等等。

同样,从CDMA/GSM/LTE/WCDMA每个band的配置文件中删除没有用到的device。比如,在文件rfc_wtr1625_naeu_wcdma_config_data_ag.c, 

当从device configuration list中增加或者删除device时候,确保相应修改NUM_DEVICES_TO_CONFIGURE参数。该参数应该根据具体方案的设计来设定。

此时NUM_DEVICES_TO_CONFIGURE为6,如果删除一个device的话,则NUM_DEVICES_TO_CONFIGURE应该改成5。

4.6端口匹配

确保端口匹配。不同technology中每个band的port软件设定应与硬件设计一致。例如:

rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg定义如下:

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/src/rfc_wtr1625_naeu_wcdma_config_data_ag.c

rfc_sig_info_type rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg = 

{

  0x02250245,   /* Revision: v2.37.581 */// uint32 rfc_revision

  {

    { (int)RFC_WTR1625_NAEU_RF_PATH_SEL_03, RFC_HIGH  },// sig_name; rfc_logic_type

    { (int)RFC_SIG_LIST_END,  RFC_LOW  }//sig_name; rfc_logic_type

  },

};

rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg.cfg_sig_list[0]的sig_name之所以选择RFC_WTR1625_NAEU_RF_PATH_SEL_03的原因:

倒查如下:

(1)

在文件./rfc_dime/rf_card/rfc_wtr1625_naeu/common/src/rfc_wtr1625_naeu_cmn_ag.cpp中,

rfc_signal_info_type rfc_wtr1625_naeu_sig_info[RFC_WTR1625_NAEU_SIG_NUM + 1] = 

{

。。。

  { RFC_MSM_RF_PATH_SEL_03                  , RFC_LOW, DAL_GPIO_PULL_DOWN, DAL_GPIO_2MA, (DALGpioSignalType)NULL }, /* RFC_WTR1625_NAEU_RF_PATH_SEL_03 */ 

。。。

};

注意:

在rfc_wtr1625_naeu_sig_info[RFC_WTR1625_NAEU_SIG_NUM + 1]列表中RFC_MSM_RF_PATH_SEL_03排序是第14,而在wtr1625_naeu_sig_type的定义中RFC_WTR1625_NAEU_RF_PATH_SEL_03排序也是第14,这样RFC_MSM_RF_PATH_SEL_03和RFC_WTR1625_NAEU_RF_PATH_SEL_03就对应起来了。

(2)

在文件./rfc_dime/target/mdm9x25/src/rfc_msm_signal_info_ag.c中,

rfc_msm_signal_info_type rfc_mdm9x25_signal_info[RFC_MSM_SIG_NUM] = 

{

。。。

  {  RFC_ANT_SEL                         ,  39              ,  14             ,  RFC_GRFC       ,  1,  DAL_GPIO_OUTPUT                      },  /* Signal: RFC_MSM_RF_PATH_SEL_03, MSM Pin Name: PA1_RANGE0*/

。。。

};

注意,在rfc_mdm9x25_signal_info[RFC_MSM_SIG_NUM]列表中,grfc number也是14,而GPIO口对应的是39口。

rfc_msm_signal_info_type的定义如下:

typedef struct

{

  rfc_signal_type signal_type;  //信号类型

  uint32 msm_gpio;  //msm GPIO

  uint8 grfc_num;   //grfc number

  rfc_gpio_grfc_type output_type;

  uint8 function_select;

  DALGpioDirectionType direction;

} rfc_msm_signal_info_type;

即GPIO39在硬件设计中是配置为RFC_WTR1625_NAEU_RF_PATH_SEL_03的。

5、RFC wtr1625 naeu config

下面以rfc wtr1625 naeu wcdma config为例,来详细介绍rfc wtr1625 naeu config代码。

Codes

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/src/rfc_wtr1625_naeu_wcdma_config_data_ag.c

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/src/rfc_wtr1625_naeu_wcdma_config_ag.cpp

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/inc/rfc_wtr1625_naeu_wcdma_config_ag.h

5.1 获取signal config data

Signal config data通过函数sig_cfg_data_get()获取()。该函数所在路径为:

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/src/rfc_wtr1625_naeu_wcdma_config_ag.cpp

定义如下:

boolean rfc_wtr1625_naeu_wcdma_ag::sig_cfg_data_get( rfc_cfg_params_type *cfg, rfc_sig_cfg_type **ptr ) {

.

.

.

else if ( ( cfg->rx_tx == RFC_CONFIG_RX ) && ( cfg->logical_device == RFM_DEVICE_0 ) && ( cfg->band == (int)RFCOM_BAND_IMT ) && ( cfg->req == RFC_REQ_DEFAULT_GET_DATA ) )

  { *ptr = &(rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg.cfg_sig_list[0]);  ret_val = TRUE; }

  else if ( ( cfg->rx_tx == RFC_CONFIG_RX ) && ( cfg->logical_device == RFM_DEVICE_1 ) && ( cfg->band == (int)RFCOM_BAND_IMT ) && ( cfg->req == RFC_REQ_DEFAULT_GET_DATA ) )

  { *ptr = &(rf_card_wtr1625_naeu_rx1_wcdma_b1_sig_cfg.cfg_sig_list[0]);  ret_val = TRUE; }

  else if ( ( cfg->rx_tx == RFC_CONFIG_TX ) && ( cfg->logical_device == RFM_DEVICE_0 ) && ( cfg->band == (int)RFCOM_BAND_IMT ) && ( cfg->req == RFC_REQ_DEFAULT_GET_DATA ) )

  { *ptr = &(rf_card_wtr1625_naeu_tx0_wcdma_b1_sig_cfg.cfg_sig_list[0]);  ret_val = TRUE; }

.

.

.

}

Band class定义如下:

/*!

  @brief

  Band class definitions as specified by 3GPP2 C.S0057.

*/

typedef enum rfm_band_class_e

{

  RFM_CDMA_BC0  = 0,  /*!< 800 MHz Band                             */

  RFM_CDMA_BC1  = 1,  /*!< 1900 MHz Band                            */

  RFM_CDMA_BC2  = 2,  /*!< TACS Band                                */

  RFM_CDMA_BC3  = 3,  /*!< JTACS Band                               */

  RFM_CDMA_BC4  = 4,  /*!< Korean PCS Band                          */

  RFM_CDMA_BC5  = 5,  /*!< 450 MHz Band                             */

  RFM_CDMA_BC6  = 6,  /*!< 2 GHz Band                               */

  RFM_CDMA_BC7  = 7,  /*!< Upper 700 MHz Band                       */

  RFM_CDMA_BC8  = 8,  /*!< 1800 MHz Band                            */

  RFM_CDMA_BC9  = 9,  /*!< 900 MHz Band                             */

  RFM_CDMA_BC10 = 10, /*!< Secondary 800 MHz Band                   */

  RFM_CDMA_BC11 = 11, /*!< 400 MHz European PAMR Band               */

  RFM_CDMA_BC12 = 12, /*!< 800 MHz PAMR Band                        */

  RFM_CDMA_BC13 = 13, /*!< 2.5 GHz IMT-2000 Extension Band          */

  RFM_CDMA_BC14 = 14, /*!< US PCS 1.9GHz Band                       */

  RFM_CDMA_BC15 = 15, /*!< AWS Band                                 */

  RFM_CDMA_BC16 = 16, /*!< US 2.5GHz Band                           */

  RFM_CDMA_BC17 = 17, /*!< US 2.5GHz Forward Link Only Band         */

  RFM_CDMA_BC18 = 18, /*!< 700 MHz Public Safety Band               */

  RFM_CDMA_BC19 = 19, /*!< Lower 700 MHz Band                       */

  RFM_CDMA_BC20 = 20, /*!< L-Band                                   */

  RFM_CDMA_MAX_BAND   /*!< Terminal value for the enum, not a valid

                           band                                     */

} rfm_cdma_band_class_type;

以rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg、rf_card_wtr1625_naeu_rx1_wcdma_b1_sig_cfg和rf_card_wtr1625_naeu_tx0_wcdma_b1_sig_cfg为例,介绍signal config data的配置。

1、rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg

rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg定义如下:

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/src/rfc_wtr1625_naeu_wcdma_config_data_ag.c

rfc_sig_info_type rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg = 

{

  0x02250245,   /* Revision: v2.37.581 */// uint32 rfc_revision

  {

    { (int)RFC_WTR1625_NAEU_RF_PATH_SEL_03, RFC_HIGH  },// sig_name; rfc_logic_type

    { (int)RFC_SIG_LIST_END,  RFC_LOW  }//sig_name; rfc_logic_type

  },

};

rfc_sig_info_type定义为:

typedef struct

{

  uint32 rfc_revision;

  rfc_sig_cfg_type cfg_sig_list[];

} rfc_sig_info_type;

rfc_sig_cfg_type定义为:

typedef struct

{

  int sig_name;

  rfc_logic_type logic;

} rfc_sig_cfg_type;

sig_name有:

typedef enum

{

  RFC_WTR1625_NAEU_TIMING_PA_CTL,

  RFC_WTR1625_NAEU_TIMING_PA_RANGE,

  RFC_WTR1625_NAEU_TIMING_ASM_CTL,

  RFC_WTR1625_NAEU_TIMING_TUNER_CTL,

  RFC_WTR1625_NAEU_TIMING_PAPM_CTL,

  RFC_WTR1625_NAEU_TIMING_TX_TX_RF_ON0,

  RFC_WTR1625_NAEU_TIMING_TX_RX_RF_ON0,

  RFC_WTR1625_NAEU_TIMING_ASM_TRIGGER,

  RFC_WTR1625_NAEU_TIMING_PAPM_TX_TX_TRIGGER,

  RFC_WTR1625_NAEU_TIMING_PAPM_OFF_TX_RX_TX_TRIGGER,

  RFC_WTR1625_NAEU_TIMING_PA_TRIGGER,

  RFC_WTR1625_NAEU_TIMING_PAPM_OFF_TX_RX_TX_CTL,

  RFC_WTR1625_NAEU_TIMING_PAPM_TX_TX_CTL,

  RFC_WTR1625_NAEU_RF_PATH_SEL_03,    //14

  RFC_WTR1625_NAEU_RF_PATH_SEL_05,

  RFC_WTR1625_NAEU_RF_PATH_SEL_06,

  RFC_WTR1625_NAEU_RF_PATH_SEL_11,

  RFC_WTR1625_NAEU_RF_PATH_SEL_04,

  RFC_WTR1625_NAEU_RF_PATH_SEL_18,

  RFC_WTR1625_NAEU_RF_PATH_SEL_08,

  RFC_WTR1625_NAEU_RF_PATH_SEL_15,

  RFC_WTR1625_NAEU_RF_PATH_SEL_14,

  RFC_WTR1625_NAEU_RF_PATH_SEL_16,

  RFC_WTR1625_NAEU_PA_ON_05,

  RFC_WTR1625_NAEU_RFIC0_SSBI1,

  RFC_WTR1625_NAEU_RFIC0_SSBI2,

  RFC_WTR1625_NAEU_RFFE1_CLK,

  RFC_WTR1625_NAEU_RFFE1_DATA,

  RFC_WTR1625_NAEU_RFFE2_CLK,

  RFC_WTR1625_NAEU_RFFE2_DATA,

  RFC_WTR1625_NAEU_INTERNAL_GNSS_BLANK,

  RFC_WTR1625_NAEU_EXT_GPS_LNA_EN,

  RFC_WTR1625_NAEU_GPDATA0_0,

  RFC_WTR1625_NAEU_GPDATA0_1,

  RFC_WTR1625_NAEU_TX_GTR_TH,

  RFC_WTR1625_NAEU_PA_IND,

  RFC_WTR1625_NAEU_SIG_NUM,

  RFC_WTR1625_NAEU_SIG_INVALID,

}wtr1625_naeu_sig_type;

rfc_logic_type有:

typedef enum

{

  RFC_LOW,

  RFC_HIGH,

  RFC_CONFIG_ONLY,

  RFC_LOGIC_NUM,

  RFC_LOGIC_INVALID = 0xFFFFFFFF

} rfc_logic_type;

rf_card_wtr1625_naeu_rx0_wcdma_b1_sig_cfg.cfg_sig_list[0]的sig_name之所以选择RFC_WTR1625_NAEU_RF_PATH_SEL_03的原因:

倒查如下:

(1)

在文件./rfc_dime/rf_card/rfc_wtr1625_naeu/common/src/rfc_wtr1625_naeu_cmn_ag.cpp中,

rfc_signal_info_type rfc_wtr1625_naeu_sig_info[RFC_WTR1625_NAEU_SIG_NUM + 1] = 

{

。。。

  { RFC_MSM_RF_PATH_SEL_03                  , RFC_LOW, DAL_GPIO_PULL_DOWN, DAL_GPIO_2MA, (DALGpioSignalType)NULL }, /* RFC_WTR1625_NAEU_RF_PATH_SEL_03 */ 

。。。

};

注意:

在rfc_wtr1625_naeu_sig_info[RFC_WTR1625_NAEU_SIG_NUM + 1]列表中RFC_MSM_RF_PATH_SEL_03排序是第14,而在wtr1625_naeu_sig_type的定义中RFC_WTR1625_NAEU_RF_PATH_SEL_03排序也是第14,这样RFC_MSM_RF_PATH_SEL_03和RFC_WTR1625_NAEU_RF_PATH_SEL_03就对应起来了。

(2)

在文件./rfc_dime/target/mdm9x25/src/rfc_msm_signal_info_ag.c中,

rfc_msm_signal_info_type rfc_mdm9x25_signal_info[RFC_MSM_SIG_NUM] = 

{

。。。

  {  RFC_ANT_SEL                         ,  39              ,  14             ,  RFC_GRFC       ,  1,  DAL_GPIO_OUTPUT                      },  /* Signal: RFC_MSM_RF_PATH_SEL_03, MSM Pin Name: PA1_RANGE0*/

。。。

};

注意,在rfc_mdm9x25_signal_info[RFC_MSM_SIG_NUM]列表中,grfc number也是14,而GPIO口对应的是39口。

rfc_msm_signal_info_type的定义如下:

typedef struct

{

  rfc_signal_type signal_type;  //信号类型

  uint32 msm_gpio;  //msm GPIO

  uint8 grfc_num;   //grfc number

  rfc_gpio_grfc_type output_type;

  uint8 function_select;

  DALGpioDirectionType direction;

} rfc_msm_signal_info_type;

即GPIO39在硬件设计中是配置为RFC_WTR1625_NAEU_RF_PATH_SEL_03的。

2、rf_card_wtr1625_naeu_tx0_wcdma_b1_sig_cfg

rf_card_wtr1625_naeu_tx0_wcdma_b1_sig_cfg配置如下:

rfc_sig_info_type rf_card_wtr1625_naeu_tx0_wcdma_b1_sig_cfg = 

{

  0x02280278,   /* Revision: v2.40.632 */

  {

    { (int)RFC_WTR1625_NAEU_TX_GTR_TH, RFC_CONFIG_ONLY  },

    { (int)RFC_WTR1625_NAEU_PA_IND, RFC_CONFIG_ONLY  },

    { (int)RFC_SIG_LIST_END,  RFC_LOW  }

  },

};

rfc_sig_info_type的定义在上面已经做过介绍。

5.2获取device config data

device config data通过函数devices_cfg_data_get()获取()。该函数所在路径为:

./rfc_dime/rf_card/rfc_wtr1625_naeu/wcdma/src/rfc_wtr1625_naeu_wcdma_config_ag.cpp

定义如下:

boolean rfc_wtr1625_naeu_wcdma_ag::devices_cfg_data_get( rfc_cfg_params_type *cfg, rfc_device_info_type **ptr )

{

...

    else if ( ( cfg->rx_tx == RFC_CONFIG_RX ) && ( cfg->logical_device == RFM_DEVICE_0 ) && ( cfg->band == (int)RFCOM_BAND_IMT ) && ( cfg->req == RFC_REQ_DEFAULT_GET_DATA ) )

  { *ptr = &(rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info);  ret_val = TRUE; }

  else if ( ( cfg->rx_tx == RFC_CONFIG_RX ) && ( cfg->logical_device == RFM_DEVICE_1 ) && ( cfg->band == (int)RFCOM_BAND_IMT ) && ( cfg->req == RFC_REQ_DEFAULT_GET_DATA ) )

  { *ptr = &(rf_card_wtr1625_naeu_rx1_wcdma_b1_device_info);  ret_val = TRUE; }

  else if ( ( cfg->rx_tx == RFC_CONFIG_TX ) && ( cfg->logical_device == RFM_DEVICE_0 ) && ( cfg->band == (int)RFCOM_BAND_IMT ) && ( cfg->req == RFC_REQ_DEFAULT_GET_DATA ) )

  { *ptr = &(rf_card_wtr1625_naeu_tx0_wcdma_b1_device_info);  ret_val = TRUE; }

...

}

以rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info和rf_card_wtr1625_naeu_tx0_wcdma_b1_device_info为例,介绍device config data的配置。

1、rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info

rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info配置如下:

rfc_device_info_type rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info = 

{

  0x02250245,   /* Revision: v2.37.581 *///RFC版本

  RFC_RX_MODEM_CHAIN_0,   /* Modem Chain */

  0 /* Warning: Not Specified */,   /* ET Modem Chain */

  0,   /* NV Container */

  3,  /* NUM_DEVICES_TO_CONFIGURE */需要配置的device数量,详见(1)NUM_DEVICES_TO_CONFIGURE

  {

    {

      RFDEVICE_TRANSCEIVER, //RF设备类型

      WTR1625,  /* NAME *///RF设备名称

      0,  /* DEVICE_TYPE_INSTANCE */

      0,  /* PHY_PATH_NUM */

      {

        0 /*Warning: Not specified*/,  /* INTF_REV */

        (int) WTR1625_WCDMA_PRX_BAND1_PMB4,  /* PORT *///端口,详见(2)port

        ( RFDEVICE_PA_LUT_MAPPING_INVALID ),  /* RF_ASIC_BAND_PA_LUT_MAP */

        FALSE,  /* TXAGC_LUT */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_ASM, //RF设备类型

      GEN_ASM /* ASM_12T_9T */,  /* NAME *///RF设备名称

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        (0x01A5 << 22)/*mfg_id*/ | (0x5F << 14)/*prd_id*/ | (2)/*port_num*/,  /* PORT_NUM */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_TUNER, //RF设备类型

      QFE1520,  /* NAME *///RF设备名称

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

  },

};

rfc_device_info_type定义如下:

typedef struct

{

  /*32 bit element capturing the RFC revision:

    upper 8 bits:  Branch/PL revision

    next 8 bits:   Major revision: This gets updated when there is 

                   a change to GPIO/GRFC mapping information, that 

                   could impact all RF Cards. A major revision 

                   update triggers release for all RF cards. 

    lower 16 bits: Minor revision: Any changes specific to certain 

                   RF cards only, such as signal logic or device

                   configurations. Minor revision update only

                   mandates release of affected RF cards. */

  uint32 rfc_revision; //rfc版本

  /* Modem Chain is specified in ag files per 

     logical path (RFM device) and band.

     For Rx configuration, this represents the ADC/WB chain to be used.

     For Tx configuration, this represents the DAC/TXC/TXR chain to be used.

     This information is required to be band specific as some cards

     split bands across transceivers: All low bands on one TRx, which

     is hardwired to a certain ADC/DAC chain and all high bands on 

     the other TRx, which is hardwired to the other ADC/DAC chain */

  uint32 modem_chain;

  uint32 et_mode

m_chain;

  /* This captures which NV container to derive calibrated data from.

     Multiple logical paths (RFM devices) which share the same RF path

     will share the same NV container. */

  uint32 nv_container;

  /* Number of physical devices, such as PAs, Antenna Switch modules

     and transceivers */

  uint32 num_devices; //物理设备的数量,如PA、天线开关、发射器

  /* Configuration information for each device, such as port info */

  rfc_asic_info_type rf_asic_info[]; //每个设备的配置信息,如端口信息。下面介绍

} rfc_device_info_type;

rfc_asic_info_type的定义如下:

typedef struct

{

  rfdevice_type_enum_type device_type;//RF设备类型,TRANSCEIVER、RECEIVER、PA。。。

  rfdevice_id_enum_type device_id;

  uint32 instance;

  uint32 phy_path_num;

  int32 data[RFC_ASIC_INFO_DATA_SIZE];

} rfc_asic_info_type;

在rfc_device_info_type rf_card_wtr1625_naeu_rx0_cdma_bc1_device_info 中选择WTR1625_CDMA_PRX_BAND1_PMB1的依据:硬件设计。

(1)NUM_DEVICES_TO_CONFIGURE

需要设置的设备数量,根据实际用到的设备来配置。该值与下面的设备数目保持一致。例如:在rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info中,该值为3,是因为下面有3个设备:RFDEVICE_TRANSCEIVER、RFDEVICE_ASM、RFDEVICE_TUNER。

(2)port

rf_card_wtr1625_naeu_rx0_wcdma_b1_device_info选择WTR1625_WCDMA_PRX_BAND1_PMB4由硬件设计决定:

2. rf_card_wtr1625_naeu_tx0_wcdma_b1_device_info

rf_card_wtr1625_naeu_tx0_wcdma_b1_device_info配置如下:

rfc_device_info_type rf_card_wtr1625_naeu_tx0_wcdma_b1_device_info = 

{

  0x02280278,   /* Revision: v2.40.632 */

  RFC_TX_MODEM_CHAIN_0,   /* Modem Chain */

  RFC_TX_MODEM_CHAIN_1,   /* ET Modem Chain */

  0,   /* NV Container */

  0,   /* Antenna */

  6,  /* NUM_DEVICES_TO_CONFIGURE */

  {

    {

      RFDEVICE_TRANSCEIVER,

      WTR1625,  /* NAME */

      0,  /* DEVICE_TYPE_INSTANCE */

      0,  /* PHY_PATH_NUM */

      {

        0 /*Warning: Not specified*/,  /* INTF_REV */

        (int)WTR1625_WCDMA_TX_BAND1_TMB3,  /* PORT */

        ( RFDEVICE_PA_LUT_MAPPING_VALID | WTR1625_LP_LUT_TYPE << RFDEVICE_PA_STATE_0_BSHFT | WTR1625_HP_LUT_TYPE << RFDEVICE_PA_STATE_1_BSHFT | WTR1625_HP_LUT_TYPE << RFDEVICE_PA_STATE_2_BSHFT | WTR1625_HP_LUT_TYPE << RFDEVICE_PA_STATE_3_BSHFT ),  /* RF_ASIC_BAND_PA_LUT_MAP */

        FALSE,  /* TXAGC_LUT */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_PA,

      GEN_PA /* HCPA */,  /* NAME */

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        (0x0107 << 22)/*mfg_id*/ | (0x01 << 14)/*prd_id*/ | (0)/*port_num*/,  /* PORT_NUM */

        //(0x0134 << 22)/*mfg_id*/ | (0x30 << 14)/*prd_id*/ | (0)/*port_num*/,  /* PORT_NUM */

        0,

0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_PAPM,

      QFE1100,  /* NAME */

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        (0x0217 << 22)/*mfg_id*/ | (0x30 << 14)/*prd_id*/ | (1)/*port_num*/,  /* PORT_NUM */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_ASM,

      GEN_ASM /* ASM_12T_9T */,  /* NAME */

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        (0x01A5 << 22)/*mfg_id*/ | (0x5F << 14)/*prd_id*/ | (2)/*port_num*/,  /* PORT_NUM */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_HDET,

      TRX_HDET,  /* NAME */

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

    {

      RFDEVICE_TUNER,

      QFE1520,  /* NAME */

      0,  /* DEVICE_TYPE_INSTANCE */

      0 /*Warning: Not specified*/,  /* PHY_PATH_NUM */

      {

        0  /* Orig setting:  */,  /* INTF_REV */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

        0,  /* Array Filler */

      },

    },

  },

}; 

6、RIL相关

源代码:

LINUX/android/:

hardware/ril/include/telephony/ril.h

hardware/ril/reference-ril/ril.h

hardware/ril/libril/ril.cpp

frameworks/base/telephony/java/android/telephony/ServiceStage.java

frameworks/opt/telephony-msim/frameworks/src/com/codeaurora/internal/telephony/MSimGsmServiceStateTracker.java

frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java

6.1 UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED

当语音网络状态改变时候被调用,同时下面两个也会被调用:

RIL_REQUEST_VOICE_REGISTRATION_STATE

RIL_REQUEST_OPERATOR

/**

 * RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED

 *

 * Called when the voice network state changed

 *

 * Callee will invoke the following requests on main thread:

 *

 * RIL_REQUEST_VOICE_REGISTRATION_STATE

 * RIL_REQUEST_OPERATOR

 *

 * "data" is NULL

 *

 * FIXME should this happen when SIM records are loaded? (eg, for

 * EONS)

 */

例如日志:

03-18 19:54:31.164 D/RILJ    ( 1305): [UNSL]< UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED [SUB0]

03-18 19:54:31.164 D/RILJ    ( 1305): [7411]> OPERATOR [SUB0]

03-18 19:54:31.174 D/RILJ    ( 1305): [7412]> DATA_REGISTRATION_STATE [SUB0]

03-18 19:54:31.174 D/RILJ    ( 1305): [7413]> VOICE_REGISTRATION_STATE [SUB0]

03-18 19:54:31.174 D/RILJ    ( 1305): [7414]> QUERY_NETWORK_SELECTION_MODE [SUB0]

03-18 19:54:31.174 E/RILQ    (  209): (0/209): RIL[0][cmd-22(288)] qcril_cm_ss_convert_gsm8bit_alpha_string_to_utf8: Invalid parameters for GSM alphabet to UTF8 conversion, input len = 0

03-18 19:54:31.174 E/RILQ    (  209): (0/209): RIL[0][cmd-22(288)] qcril_cm_ss_convert_gsm8bit_alpha_string_to_utf8: Invalid parameters for GSM alphabet to UTF8 conversion, input len = 0

03-18 19:54:31.184 D/RILJ    ( 1305): [7411]< OPERATOR {CHN-UNICOM, UNICOM, 46001} [SUB0]

03-18 19:54:31.184 D/RILJ    ( 1305): [7412]< DATA_REGISTRATION_STATE {1, d10b, 060b594d, 15, null, 20, null, null, null, null, null} [SUB0]

03-18 19:54:31.194 D/RILJ    ( 1305): [7413]< VOICE_REGISTRATION_STATE {1, d10b, 060b594d, 3, null, null, null, 0, null, null, 1, null, null, 0, ce} [SUB0]

03-18 19:54:31.194 D/RILJ    ( 1305): [UNSL]< UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED [SUB0]

03-18 19:54:31.194 D/RILJ    ( 1305): [7414]< QUERY_NETWORK_SELECTION_MODE {0} [SUB0]

03-18 19:54:31.194 D/PHONE   ( 1305): [ServiceState] setDataRegState=0

03-18 19:54:31.194 D/PHONE   ( 1305): [ServiceState] setDataRadioTechnology=15

03-18 19:54:31.194 D/GsmSST  ( 1305): [MSimGsmSST] [SUB : 0] handlPollStateResultMessage: GsmSST setDataRegState=0 regState=1 dataRadioTechnology=15

03-18 19:54:31.194 D/PHONE   ( 1305): [ServiceState] setVoiceRegState=0

03-18 19:54:31.194 E/PHONE   ( 1305): [ServiceState] setState deprecated use setVoiceRegState()

03-18 19:54:31.194 D/RILJ    ( 1305): [7415]> OPERATOR [SUB0]

03-18 19:54:31.194 D/RILJ    ( 1305): [7416]> DATA_REGISTRATION_STATE [SUB0]

03-18 19:54:31.204 D/RILJ    ( 1305): [7417]> VOICE_REGISTRATION_STATE [SUB0]

03-18 19:54:31.204 E/RILQ    (  209): (0/209): RIL[0][cmd-22(288)] qcril_cm_ss_convert_gsm8bit_alpha_string_to_utf8: Invalid parameters for GSM alphabet to UTF8 conversion, input len = 0

03-18 19:54:31.204 E/RILQ    (  209): (0/209): RIL[0][cmd-22(288)] qcril_cm_ss_convert_gsm8bit_alpha_string_to_utf8: Invalid parameters for GSM alphabet to UTF8 conversion, input len = 0

03-18 19:54:31.204 D/RILJ    ( 1305): [7418]> QUERY_NETWORK_SELECTION_MODE [SUB0]

03-18 19:54:31.204 D/RILJ    ( 1305): [7415]< OPERATOR {CHN-UNICOM, UNICOM, 46001} [SUB0]

03-18 19:54:31.204 D/RILJ    ( 1305): [7416]< DATA_REGISTRATION_STATE {1, d10b, 060b594d, 15, null, 20, null, null, null, null, null} [SUB0]

6.2 OPERATOR 

网络提供商

/**

 * RIL_REQUEST_OPERATOR

 *

 * Request current operator ONS or EONS

 *

 * "data" is NULL

 * "response" is a "const char **"

 * ((const char **)response)[0] is long alpha ONS or EONS

 *                                  or NULL if unregistered

 *

 * ((const char **)response)[1] is short alpha ONS or EONS

 *                                  or NULL if unregistered

 * ((const char **)response)[2] is 5 or 6 digit numeric code (MCC + MNC)

 *                                  or NULL if unregistered

 *

 * Valid errors:

 *  SUCCESS

 *  RADIO_NOT_AVAILABLE

 *  GENERIC_FAILURE

 */

例如日志:

03-18 19:54:31.194 D/RILJ    ( 1305): [7415]> OPERATOR [SUB0]

。。。

03-18 19:54:31.204 D/RILJ    ( 1305): [7415]< OPERATOR {CHN-UNICOM, UNICOM, 46001} [SUB0]

6.3 DATA_REGISTRATION_STATE

当前数据注册状态。

/**

 * RIL_REQUEST_DATA_REGISTRATION_STATE

 *

 * Request current DATA registration state

 *

 * "data" is NULL

 * "response" is a "char **"

 * ((const char **)response)[0] is registration state 0-5 from TS 27.007 10.1.20 AT+CGREG

 * ((const char **)response)[1] is LAC if registered or NULL if not

 * ((const char **)response)[2] is CID if registered or NULL if not

 * ((const char **)response)[3] indicates the available data radio technology,

 *                              valid values as defined by RIL_RadioTechnology.

 * ((const char **)response)[4] if registration state is 3 (Registration

 *                               denied) this is an enumerated reason why

 *                               registration was denied.  See 3GPP TS 24.008,

 *                               Annex G.6 "Additonal cause codes for GMM".

 *      7 == GPRS services not allowed

 *      8 == GPRS services and non-GPRS services not allowed

 *      9 == MS identity cannot be derived by the network

 *      10 == Implicitly detached

 *      14 == GPRS services not allowed in this PLMN

 *      16 == MSC temporarily not reachable

 *      40 == No PDP context activated

 * ((const char **)response)[5] The maximum number of simultaneous Data Calls that can be

 *                              established using RIL_REQUEST_SETUP_DATA_CALL.

 *

 * The values at offsets 6..10 are optional LTE location information in decimal.

 * If a value is unknown that value may be NULL. If all values are NULL,

 * none need to be present.

 *  ((const char **)response)[6] is TAC, a 16-bit Tracking Area Code.

 *  ((const char **)response)[7] is CID, a 0-503 Physical Cell Identifier.

 *  ((const char **)response)[8] is ECI, a 28-bit E-UTRAN Cell Identifier.

 *  ((const char **)response)[9] is CSGID, a 27-bit Closed Subscriber Group Identity.

 *  ((const char **)response)[10] is TADV, a 6-bit timing advance value.

 *

 * LAC and CID are in hexadecimal format.

 * valid LAC are 0x0000 - 0xffff

 * valid CID are 0x00000000 - 0x0fffffff

 *

 * Please note that registration state 4 ("unknown") is treated

 * as "out of service" in the Android telephony system

 *

 * Valid errors:

 *  SUCCESS

 *  RADIO_NOT_AVAILABLE

 *  GENERIC_FAILURE

 */

例如日志:

03-18 19:54:31.194 D/RILJ    ( 1305): [7416]> DATA_REGISTRATION_STATE [SUB0]

。。。

03-18 19:54:31.204 D/RILJ    ( 1305): [7416]< DATA_REGISTRATION_STATE {1, d10b, 060b594d, 15, null, 20, null, null, null, null, null} [SUB0]

6.4 VOICE_REGISTRATION_STATE

当前语音注册状态。

/**

 * RIL_REQUEST_VOICE_REGISTRATION_STATE

 *

 * Request current registration state

 *

 * "data" is NULL

 * "response" is a "char **"

 * ((const char **)response)[0] is registration state 0-6,

 *              0 - Not registered, MT is not currently searching

 *                  a new operator to register

 *              1 - Registered, home network

 *              2 - Not registered, but MT is currently searching

 *                  a new operator to register

 *              3 - Registration denied

 *              4 - Unknown

 *              5 - Registered, roaming

 *             10 - Same as 0, but indicates that emergency calls

 *                  are enabled.

 *             12 - Same as 2, but indicates that emergency calls

 *                  are enabled.

 *             13 - Same as 3, but indicates that emergency calls

 *                  are enabled.

 *             14 - Same as 4, but indicates that emergency calls

 *                  are enabled.

 *

 * ((const char **)response)[1] is LAC if registered on a GSM/WCDMA system or

 *                              NULL if not.Valid LAC are 0x0000 - 0xffff

 * ((const char **)response)[2] is CID if registered on a * GSM/WCDMA or

 *                              NULL if not.

 *                                 Valid CID are 0x00000000 - 0xffffffff

 *                                    In GSM, CID is Cell ID (see TS 27.007)

 *                                            in 16 bits

 *                                    In UMTS, CID is UMTS Cell Identity

 *                                             (see TS 25.331) in 28 bits

 * ((const char **)response)[3] indicates the available voice radio technology,

 *                              valid values as defined by RIL_RadioTechnology.

 * ((const char **)response)[4] is Base Station ID if registered on a CDMA

 *                              system or NULL if not.  Base Station ID in

 *                              decimal format

 * ((const char **)response)[5] is Base Station latitude if registered on a

 *                              CDMA system or NULL if not. Base Station

 *                              latitude is a decimal number as specified in

 *                              3GPP2 C.S0005-A v6.0. It is represented in

 *                              units of 0.25 seconds and ranges from -1296000

 *                              to 1296000, both values inclusive (corresponding

 *                              to a range of -90 to +90 degrees).

 * ((const char **)response)[6] is Base Station longitude if registered on a

 *                              CDMA system or NULL if not. Base Station

 *                              longitude is a decimal number as specified in

 *                              3GPP2 C.S0005-A v6.0. It is represented in

 *                              units of 0.25 seconds and ranges from -2592000

 *                              to 2592000, both values inclusive (corresponding

 *                              to a range of -180 to +180 degrees).

 * ((const char **)response)[7] is concurrent services support indicator if

 *                              registered on a CDMA system 0-1.

 *                                   0 - Concurrent services not supported,

 *                                   1 - Concurrent services supported

 * ((const char **)response)[8] is System ID if registered on a CDMA system or

 *                              NULL if not. Valid System ID are 0 - 32767

 * ((const char **)response)[9] is Network ID if registered on a CDMA system or

 *                              NULL if not. Valid System ID are 0 - 65535

 * ((const char **)response)[10] is the TSB-58 Roaming Indicator if registered

 *                               on a CDMA or EVDO system or NULL if not. Valid values

 *                               are 0-255.

 * ((const char **)response)[11] indicates whether the current system is in the

 *                               PRL if registered on a CDMA or EVDO system or NULL if

 *                               not. 0=not in the PRL, 1=in the PRL

 * ((const char **)response)[12] is the default Roaming Indicator from the PRL,

 *                               if registered on a CDMA or EVDO system or NULL if not.

 *                               Valid values are 0-255.

 * ((const char **)response)[13] if registration state is 3 (Registration

 *                               denied) this is an enumerated reason why

 *                               registration was denied.  See 3GPP TS 24.008,

 *                               10.5.3.6 and Annex G.

 *                                 0 - General

 *                                 1 - Authentication Failure

 *                                 2 - IMSI unknown in HLR

 *                                 3 - Illegal MS

 *                                 4 - Illegal ME

 *                                 5 - PLMN not allowed

 *                                 6 - Location area not allowed

 *                                 7 - Roaming not allowed

 *                                 8 - No Suitable Cells in this Location Area

 *                                 9 - Network failure

 *                                10 - Persistent location update reject

 *                                11 - PLMN not allowed

 *                                12 - Location area not allowed

 *                                13 - Roaming not allowed in this Location Area

 *                                15 - No Suitable Cells in this Location Area

 *                                17 - Network Failure

 *                                20 - MAC Failure

 *                                21 - Sync Failure

 *                                22 - Congestion

 *                                23 - GSM Authentication unacceptable

 *                                25 - Not Authorized for this CSG

 *                                32 - Service option not supported

 *                                33 - Requested service option not subscribed

 *                                34 - Service option temporarily out of order

 *                                38 - Call cannot be identified

 *                                48-63 - Retry upon entry into a new cell

 *                                95 - Semantically incorrect message

 *                                96 - Invalid mandatory information

 *                                97 - Message type non-existent or not implemented

 *                                98 - Message not compatible with protocol state

 *                                99 - Information element non-existent or not implemented

 *                               100 - Conditional IE error

 *                               101 - Message not compatible with protocol state

 *                               111 - Protocol error, unspecified

 * ((const char **)response)[14] is the Primary Scrambling Code of the current

 *                               cell as described in TS 25.331, in hexadecimal

 *                               format, or NULL if unknown or not registered

 *                               to a UMTS network.

 *

 * Please note that registration state 4 ("unknown") is treated

 * as "out of service" in the Android telephony system

 *

 * Registration state 3 can be returned if Location Update Reject

 * (with cause 17 - Network Failure) is received repeatedly from the network,

 * to facilitate "managed roaming"

 *

 * Valid errors:

 *  SUCCESS

 *  RADIO_NOT_AVAILABLE

 *  GENERIC_FAILURE

 */

例如:

03-18 19:54:42.148 D/RILJ    ( 1305): [7421]> VOICE_REGISTRATION_STATE [SUB0]

。。。

03-18 19:54:42.198 D/RILJ    ( 1305): [7421]< VOICE_REGISTRATION_STATE {1, d10b, 060b594d, 3, null, null, null, 0, null, null, 1, null, null, 0, ce} [SUB0]

6.5 MSimGsmSST

MSim Gsm Service State Tracker:网络服务状态变化

6.6 Service State

oldSS:old Service State

newSS:new Service State

例如:

03-18 19:54:42.208 D/GsmSST  ( 1305): [MSimGsmSST] [SUB : 0] Poll ServiceState done:  oldSS=[0 0 home CHN-UNICOM UNICOM 46001  UMTS HSPAP CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false] newSS=[0 0 home CHN-UNICOM UNICOM 46001  UMTS HSPA CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false] oldMaxDataCalls=20 mNewMaxDataCalls=20 oldReasonDataDenied=-1 mNewReasonDataDenied=-1

整理一下,就可以看出前后网络服务状态的变化:

03-18 19:54:42.208 D/GsmSST  ( 1305): [MSimGsmSST] [SUB : 0] Poll ServiceState done:  

oldSS=[0 0 home CHN-UNICOM UNICOM 46001  UMTS HSPAP CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false] 

newSS=[0 0 home CHN-UNICOM UNICOM 46001  UMTS HSPA CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false] oldMaxDataCalls=20 mNewMaxDataCalls=20 oldReasonDataDenied=-1 mNewReasonDataDenied=-1

6.7 dataRegState

手机注册状态。

    /**

     * Normal operation condition, the phone is registered

     * with an operator either in home network or in roaming.

     */

    public static final int STATE_IN_SERVICE = 0;

    /**

     * Phone is not registered with any operator, the phone

     * can be currently searching a new operator to register to, or not

     * searching to registration at all, or registration is denied, or radio

     * signal is not available.

     */

    public static final int STATE_OUT_OF_SERVICE = 1;

    /**

     * The phone is registered and locked.  Only emergency numbers are allowed. {@more}

     */

    public static final int STATE_EMERGENCY_ONLY = 2;

    /**

     * Radio of telephony is explicitly powered off.

     */

    public static final int STATE_POWER_OFF = 3;

例如日志:

6.8 regState

RIL level registration state values。

    /**

     * RIL level registration state values from ril.h

     * ((const char **)response)[0] is registration state 0-6,

     *              0 - Not registered, MT is not currently searching

     *                  a new operator to register

     *              1 - Registered, home network

     *              2 - Not registered, but MT is currently searching

     *                  a new operator to register

     *              3 - Registration denied

     *              4 - Unknown

     *              5 - Registered, roaming

     *             10 - Same as 0, but indicates that emergency calls

     *                  are enabled.

     *             12 - Same as 2, but indicates that emergency calls

     *                  are enabled.

     *             13 - Same as 3, but indicates that emergency calls

     *                  are enabled.

     *             14 - Same as 4, but indicates that emergency calls

     *                  are enabled.

     * @hide

     */

    public static final int RIL_REG_STATE_NOT_REG = 0;

    /** @hide */

    public static final int RIL_REG_STATE_HOME = 1;

    /** @hide */

    public static final int RIL_REG_STATE_SEARCHING = 2;

    /** @hide */

    public static final int RIL_REG_STATE_DENIED = 3;

    /** @hide */

    public static final int RIL_REG_STATE_UNKNOWN = 4;

    /** @hide */

    public static final int RIL_REG_STATE_ROAMING = 5;

    /** @hide */

    public static final int RIL_REG_STATE_NOT_REG_EMERGENCY_CALL_ENABLED = 10;

    /** @hide */

    public static final int RIL_REG_STATE_SEARCHING_EMERGENCY_CALL_ENABLED = 12;

    /** @hide */

    public static final int RIL_REG_STATE_DENIED_EMERGENCY_CALL_ENABLED = 13;

    /** @hide */

    public static final int RIL_REG_STATE_UNKNOWN_EMERGENCY_CALL_ENABLED = 14;

例如日志:

6.9 dataRadioTechnology

   /**

     * Available radio technologies for GSM, UMTS and CDMA.

     * Duplicates the constants from hardware/radio/include/ril.h

     * This should only be used by agents working with the ril.  Others

     * should use the equivalent TelephonyManager.NETWORK_TYPE_*

     */

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_UNKNOWN = 0;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_GPRS = 1;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_EDGE = 2;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_UMTS = 3;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_IS95A = 4;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_IS95B = 5;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_1xRTT = 6;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_EVDO_0 = 7;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_EVDO_A = 8;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_HSDPA = 9;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_HSUPA = 10;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_HSPA = 11;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_EVDO_B = 12;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_EHRPD = 13;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_LTE = 14;

    /** @hide */

    public static final int RIL_RADIO_TECHNOLOGY_HSPAP = 15;

    /**

     * GSM radio technology only supports voice. It does not support data.

     * @hide

     */

    public static final int RIL_RADIO_TECHNOLOGY_GSM = 16;

    /**

     * TD-SCDMA

     * @hide

     */

    public static final int RIL_RADIO_TECHNOLOGY_TD_SCDMA = 17;

    /**

     * IWLAN

     * @hide

     */

public static final int RIL_RADIO_TECHNOLOGY_IWLAN = 18;

例如日志:


7、调试记录

7.1 Mipi 设备做兼容的方法

针对8916,8939 等平台,8909 平台不同。

主要修改两个地方:

1.common 文件夹

2.对应用的的band

案例:

代码需要同时兼容7907和7941两个PA,主板上的PA可能是7907也可能是7941,代码要做到兼容。修改如下:

1.common 文件夹

如下图所示:

2.具体band 处的配置

如下图所示:

7.2 Modifing PA range map setting 

7.2.1检查器件的DATASHEET

首先我们检查PA的datasheet,例如P660的mipi控制TDSB34,B39 发射的PA的register0

图 (1)

TDSB34,B39 硬件上连接对应PORT33口,寄存器0的值为0x25,0x26,分别控制LPM,HPM,为2档PA,有一个切换点。代码中对应如下图(2)

图(2)

7.2.2检查RF_CARD CODE 

 a.检查TRANSCEIVER的LUT setting与功放高低增益相互对应关系,如B34 TDSCDMA的配置如下:

   图(3)

该增益模式是WTR1605_LP_LUT_TYPE                       低

             WTR1605_HP_LUT_TYPE                      高

             WTR1605_LUT_PWR_INVALID                 无效

             WTR1605_LUT_PWR_INVALID                 无效

3G的TRANSCEIVER的增益模式配置是由低到高的,4G的TRANSCEIVER的增益模式配置是由高到低的。

b.如何才能使TRANSCEIVER的增益与PA功放的等级对应呢?这个就需要我们设置该频段的NV项的PA_RANGE_MAP  见如下图(4)

                                  图(4)

我们的XTT 校准工具中也需要相应的修改,如下图(5)

                                    图(5)

Tx FreqComp:PA State List 该值设置为1,0,0 它索引的是PA_RANGE_MAP 中的值,第一个值1,索引为PA_RANGE_MAP 数组中第二个值的PA状态,及本例中的高增益状态,可以根据该状态设置其他校准配置项,及其他所有的配置可能要按照PA 增益由高到低排序,也及校准的XTT是从高增益往低增益校准的。


8、MSM8994 RF驱动调试

8.1选择rf_card类型

经高通review原理图后,高通建议我们使用rf card RFC_WTR3925_SSKU_QFEs_ET (HWID=5)。

所以使用的代码是:modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et

HWID:modem_proc/rfc_bolt/api/rfc_hwid.h

备注:建立source insight工程,可以调高调试效率。

8.2 Transceiver

8.2.1 MID、PID、USID

配置依据:

MIPI bus

MIPI devices

MID

PID

USID

RFFE1

WTR3905

0x217

0xC0

0x01

Transceiver

RFFE2

QFE2101

0x217

0x31

0x04

APT

RFFE2

SKY77814

0x1A5

0x85

0x0F

PA

RFFE2

RF7459

0x134

0x30

0x0F

PA

RFFE3

RF1496A

0x134

0x20

0x0B

DRx SWITCH

RFFE5

RF1498A

0X134

0X28

0x0B

PRx SWITCH

配置思路:

比对并修改MID、PID、USID

代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/common/src/rfc_wtr3925_ssku_qfes_et_cmn_ag.cpp

8.2.2 PORT

配置依据:

RF Port

G

C

W

LTE-FDD

LTE-TDD

TD-SCDMA

QB

1,2,5,8

1,3,7,8,20

38,39,40,41

34,39

TX_LB1

850,900

TX_LB2

BC0

5,8

20

TX_LB3

TX_LB4

TX_HMLB1

TX_HMLB1

TX_HMB1

TX_HMB2

7

38,40,41

TX_HMB3

1,2

1,3

39

34,39

TX_HMB4

1800,1900

PRX_LB1

900

8

PRX_LB2

PRX_LB3

20

PRX_LB4

850

BC0

5

PRX_MB1

1900

2

PRX_MB2

39

34,39

PRX_MB3

1800

3

PRX_MB4

PRX_MB5

1

1

PRX_MLB6

PRX_HB1

7

PRX_HB2

40

PRX_HB3

38,41

PRX_HB4

DRX_LB1

8

DRX_LB2

DRX_LB3

20

DRX_LB4

5

DRX_MB1

2

DRX_MB2

39

39

DRX_MB3

3

DRX_MB4

DRX_MB5

1

1

DRX_MLB6

34

DRX_HB1

7

DRX_HB2

DRX_HB3

40

DRX_HB4

38,41

配置思路:

逐个模式比对、修改。按照GMS、CDMA、WCDMA、LTE-FDD、LTE-TDD、TD-SCDMA顺序,将表格中参数逐个与代码比对,修改,调试完一个,再看另一个。

在每个模式中,对每个频段逐个比对、修改。每个频段要比对TX、PRX、DRX的Port。

代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/模式/src/的*.c文件。以GSM为例,对应代码是modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

所有相关代码列表:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/

./gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

./cdma/src/rfc_wtr3925_ssku_qfes_et_cdma_config_data_ag.c

./wcdma/src/rfc_wtr3925_ssku_qfes_et_wcdma_config_data_ag.c

./lte/src/rfc_wtr3925_ssku_qfes_et_lte_config_data_ag.c

./tdscdma/src/rfc_wtr3925_ssku_qfes_et_tdscdma_config_data_ag.c

TX项:一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_tx0_模式频段_device_info中的WTR3925 Port项比对,如果不一致,修改代码。以GMS 850频段TX为例:

表格参数:

RF Port

G

TX_LB1

850,900

对应代码:

PRX项:一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_rx0_模式频段_device_info中的WTR3925 Port项比对,如果不一致,修改代码。以WCDMA B8频段PRX为例:

表格参数:

RF Port

W

PRX_LB1

8

代码:

DRX项:一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_rx1_模式频段_device_info中的WTR3925 Port项比对,如果不一致,修改代码。以WCDMA B8频段DRX为例:

表格参数:

RF Port

W

DRX_LB1

8

代码:

8.3 PA

8.3.1更新device list

添加新增的PA,移除不用的PA。

修改依据:

相关代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/common/src/rfc_wtr3925_ssku_qfes_et_cmn_ag.cpp

rfc_phy_device_info_type rfc_wtr3925_ssku_qfes_et_phy_devices_list[] 

rfc_logical_device_info_type rfc_wtr3925_ssku_qfes_et_logical_devices_list[]

其中,rfc_phy_device_info_type rfc_wtr3925_ssku_qfes_et_phy_devices_list[]的设置如下:

器件的排列顺序:Transceiver、APT、PA、SWITCH

MIPI BUS的设置。下图红框中的值,0、1、2、3。。。分别对应RFFE1、RFFE2、RFFE3、RFFE4。。。

MID:PHY_DEVICE_MANUFACTURER_ID

PID:PHY_DEVICE_PRODUCT_ID

USID:PHY_DEVICE_ASSIGNED_USID

PHY_DEVICE_INSTANCE:从0开始顺序递增

rfc_logical_device_info_type rfc_wtr3925_ssku_qfes_et_logical_devices_list[]的设置如下:

器件的顺序:Transceiver、APT、PA、SWITCH

DEVICE_MODULE_TYPE_INSTANCE:

ASSOCIATED_PHY_DEVICE_INSTANCE:从0开始顺序递增

8.3.2 RF7459

8.3.2.1添加驱动

由于rf_card rfc_wtr3925_ssku_qfes_et默认不使用PA RF7459,所以要添加一下RF7459的驱动。

PA的驱动代码统一放在路径:modem_proc/rfdevice_pa/src/

经查找,发现源代码里PA7389的MID、PID和RF7459一样。可以考虑借用PA7389的驱动,然后再做修改。

对照代码rfdevice_pa_rfmd_7389_data_ag.cpp和RF参数配置表,在RF参数配置表上补上port一栏。

如果代码中缺少PA参数对应的port,则修改代码。

PA端口。修改依据:

代码修改:

Bias data。修改依据:

代码修改:

相关代码:

modem_proc/rfdevice_pa/src/

./rfdevice_pa_factory_ag.cpp

./rfdevice_pa_rfmd_7389_data_ag.cpp

8.3.2.2 device list

在device list里面检查是否有RF7459的MID、PID、USID,如果没有,则添加上去。

相关代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/common/src/rfc_wtr3925_ssku_qfes_et_cmn_ag.cpp

8.3.2.3修改各模式频段的PA

根据RF参数配置表中的RF7459参数,修改代码。

配置依据:

Band

Value

Port

B1

HPM

0x0D

0

LPM

0x0E

B2

HPM

0x15

1

LPM

0x16

B3

HPM

0x1D

2

LPM

0x1E

B34 B39

HPM

0x25

3

LPM

0x26

B5/CDMA BC0

HPM

0x2D

4

LPM

0x2E

B26

HPM

0x

LPM

0x

B20

HPM

0x55

13

LPM

0x56

B8

HPM

0x3D

6

LPM

0x3E

GMSK/EDGE LB

HPM

0x44

9

MPM

0x45

LPM

0x46

ULPM

0x47

GMSK/EDGE HB

HPM

0x4C

11

MPM

0x4D

LPM

0x4E

ULPM

0x4F

支持的所有频段

GSM: 850/900/1800/1900

TD-SCDMA: B34,B39; 

WCDMA:B1,B2,B5,B8

LTE-FDD:B1,B3,B7,B8,B20; 

LTE-TDD: B40,B38,B39,B41

CDMA BC0

对于GMS,850,900用的是LB,即如下数据:

GMSK/EDGE LB

HPM

0x44

9

MPM

0x45

LPM

0x46

ULPM

0x47

对于GMS,1800,1900用的是HB,即如下数据:

GMSK/EDGE HB

HPM

0x4C

11

MPM

0x4D

LPM

0x4E

ULPM

0x4F

配置思路:

逐个模式比对、修改。按照下表顺序,依次对GMS、TD-SCDMA、WCDMA、LTE-FDD、LTE-TDD、CDMA,将PA Port表中参数逐个与代码比对,修改,调试完一个,再看另一个。

支持的所有频段

GSM: 850/900/1800/1900

TD-SCDMA: B34,B39; 

WCDMA:B1,B2,B5,B8

LTE-FDD:B1,B3,B7,B8,B20; 

LTE-TDD: B40,B38,B39,B41

CDMA BC0

代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/模式/src/的*.c文件。以GSM为例,对应代码是modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

所有相关代码列表:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/

./gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

./cdma/src/rfc_wtr3925_ssku_qfes_et_cdma_config_data_ag.c

./wcdma/src/rfc_wtr3925_ssku_qfes_et_wcdma_config_data_ag.c

./lte/src/rfc_wtr3925_ssku_qfes_et_lte_config_data_ag.c

./tdscdma/src/rfc_wtr3925_ssku_qfes_et_tdscdma_config_data_ag.c

一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_tx0_模式频段_device_info中的RFDEVICE_PA Port项比对,如果不一致,修改代码。以GMS 850频段为例:

表格参数:

使用的PA是RF7459,port参数如下表。

GMSK/EDGE LB

HPM

0x44

9

MPM

0x45

LPM

0x46

ULPM

0x47

对应代码:

填上DEVICE_MODULE_TYPE_INSTANCE、MID、PID、PORT。其中DEVICE_MODULE_TYPE_INSTANCE是850频段使用到的PA数量。

MIPI bus

MIPI devices

MID

PID

USID

RFFE1

WTR3905

0x217

0xC0

0x01

Transceiver

RFFE2

QFE2101

0x217

0x31

0x04

APT

RFFE2

SKY77814

0x1A5

0x85

0x0F

PA

RFFE2

RF7459

0x134

0x30

0x0F

PA

RFFE3

RF1496A

0x134

0x20

0x0B

DRx SWITCH

RFFE5

RF1498A

0X134

0X28

0x0B

PRx SWITCH

配置思路:

比对并修改MID、PID、USID

代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/common/src/rfc_wtr3925_ssku_qfes_et_cmn_ag.cpp

8.2.2 PORT

配置依据:

RF Port

G

C

W

LTE-FDD

LTE-TDD

TD-SCDMA

QB

1,2,5,8

1,3,7,8,20

38,39,40,41

34,39

TX_LB1

850,900

TX_LB2

BC0

5,8

20

TX_LB3

TX_LB4

TX_HMLB1

TX_HMLB1

TX_HMB1

TX_HMB2

7

38,40,41

TX_HMB3

1,2

1,3

39

34,39

TX_HMB4

1800,1900

PRX_LB1

900

8

PRX_LB2

PRX_LB3

20

PRX_LB4

850

BC0

5

PRX_MB1

1900

2

PRX_MB2

39

34,39

PRX_MB3

1800

3

PRX_MB4

PRX_MB5

1

1

PRX_MLB6

PRX_HB1

7

PRX_HB2

40

PRX_HB3

38,41

PRX_HB4

DRX_LB1

8

DRX_LB2

DRX_LB3

20

DRX_LB4

5

DRX_MB1

2

DRX_MB2

39

39

DRX_MB3

3

DRX_MB4

DRX_MB5

1

1

DRX_MLB6

34

DRX_HB1

7

DRX_HB2

DRX_HB3

40

DRX_HB4

38,41

配置思路:

逐个模式比对、修改。按照GMS、CDMA、WCDMA、LTE-FDD、LTE-TDD、TD-SCDMA顺序,将表格中参数逐个与代码比对,修改,调试完一个,再看另一个。

在每个模式中,对每个频段逐个比对、修改。每个频段要比对TX、PRX、DRX的Port。

代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/模式/src/的*.c文件。以GSM为例,对应代码是modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

所有相关代码列表:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/

./gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

./cdma/src/rfc_wtr3925_ssku_qfes_et_cdma_config_data_ag.c

./wcdma/src/rfc_wtr3925_ssku_qfes_et_wcdma_config_data_ag.c

./lte/src/rfc_wtr3925_ssku_qfes_et_lte_config_data_ag.c

./tdscdma/src/rfc_wtr3925_ssku_qfes_et_tdscdma_config_data_ag.c

TX项:一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_tx0_模式频段_device_info中的WTR3925 Port项比对,如果不一致,修改代码。以GMS 850频段TX为例:

表格参数:

RF Port

G

TX_LB1

850,900

对应代码:

PRX项:一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_rx0_模式频段_device_info中的WTR3925 Port项比对,如果不一致,修改代码。以WCDMA B8频段PRX为例:

表格参数:

RF Port

W

PRX_LB1

8

代码:

DRX项:一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_rx1_模式频段_device_info中的WTR3925 Port项比对,如果不一致,修改代码。以WCDMA B8频段DRX为例:

表格参数:

RF Port

W

DRX_LB1

8

代码:

8.3 PA

8.3.1更新device list

添加新增的PA,移除不用的PA。

修改依据:

相关代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/common/src/rfc_wtr3925_ssku_qfes_et_cmn_ag.cpp

rfc_phy_device_info_type rfc_wtr3925_ssku_qfes_et_phy_devices_list[] 

rfc_logical_device_info_type rfc_wtr3925_ssku_qfes_et_logical_devices_list[]

其中,rfc_phy_device_info_type rfc_wtr3925_ssku_qfes_et_phy_devices_list[]的设置如下:

器件的排列顺序:Transceiver、APT、PA、SWITCH

MIPI BUS的设置。下图红框中的值,0、1、2、3。。。分别对应RFFE1、RFFE2、RFFE3、RFFE4。。。

MID:PHY_DEVICE_MANUFACTURER_ID

PID:PHY_DEVICE_PRODUCT_ID

USID:PHY_DEVICE_ASSIGNED_USID

PHY_DEVICE_INSTANCE:从0开始顺序递增

rfc_logical_device_info_type rfc_wtr3925_ssku_qfes_et_logical_devices_list[]的设置如下:

器件的顺序:Transceiver、APT、PA、SWITCH

DEVICE_MODULE_TYPE_INSTANCE:

ASSOCIATED_PHY_DEVICE_INSTANCE:从0开始顺序递增

8.3.2 RF7459

8.3.2.1添加驱动

由于rf_card rfc_wtr3925_ssku_qfes_et默认不使用PA RF7459,所以要添加一下RF7459的驱动。

PA的驱动代码统一放在路径:modem_proc/rfdevice_pa/src/

经查找,发现源代码里PA7389的MID、PID和RF7459一样。可以考虑借用PA7389的驱动,然后再做修改。

对照代码rfdevice_pa_rfmd_7389_data_ag.cpp和RF参数配置表,在RF参数配置表上补上port一栏。

如果代码中缺少PA参数对应的port,则修改代码。

PA端口。修改依据:

代码修改:

Bias data。修改依据:

代码修改:

相关代码:

modem_proc/rfdevice_pa/src/

./rfdevice_pa_factory_ag.cpp

./rfdevice_pa_rfmd_7389_data_ag.cpp

8.3.2.2 device list

在device list里面检查是否有RF7459的MID、PID、USID,如果没有,则添加上去。

相关代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/common/src/rfc_wtr3925_ssku_qfes_et_cmn_ag.cpp

8.3.2.3修改各模式频段的PA

根据RF参数配置表中的RF7459参数,修改代码。

配置依据:

Band

Value

Port

B1

HPM

0x0D

0

LPM

0x0E

B2

HPM

0x15

1

LPM

0x16

B3

HPM

0x1D

2

LPM

0x1E

B34 B39

HPM

0x25

3

LPM

0x26

B5/CDMA BC0

HPM

0x2D

4

LPM

0x2E

B26

HPM

0x

LPM

0x

B20

HPM

0x55

13

LPM

0x56

B8

HPM

0x3D

6

LPM

0x3E

GMSK/EDGE LB

HPM

0x44

9

MPM

0x45

LPM

0x46

ULPM

0x47

GMSK/EDGE HB

HPM

0x4C

11

MPM

0x4D

LPM

0x4E

ULPM

0x4F

支持的所有频段

GSM: 850/900/1800/1900

TD-SCDMA: B34,B39; 

WCDMA:B1,B2,B5,B8

LTE-FDD:B1,B3,B7,B8,B20; 

LTE-TDD: B40,B38,B39,B41

CDMA BC0

对于GMS,850,900用的是LB,即如下数据:

GMSK/EDGE LB

HPM

0x44

9

MPM

0x45

LPM

0x46

ULPM

0x47

对于GMS,1800,1900用的是HB,即如下数据:

GMSK/EDGE HB

HPM

0x4C

11

MPM

0x4D

LPM

0x4E

ULPM

0x4F

配置思路:

逐个模式比对、修改。按照下表顺序,依次对GMS、TD-SCDMA、WCDMA、LTE-FDD、LTE-TDD、CDMA,将PA Port表中参数逐个与代码比对,修改,调试完一个,再看另一个。

支持的所有频段

GSM: 850/900/1800/1900

TD-SCDMA: B34,B39; 

WCDMA:B1,B2,B5,B8

LTE-FDD:B1,B3,B7,B8,B20; 

LTE-TDD: B40,B38,B39,B41

CDMA BC0

代码:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/模式/src/的*.c文件。以GSM为例,对应代码是modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

所有相关代码列表:

modem_proc/rfc_bolt/rf_card/rfc_wtr3925_ssku_qfes_et/

./gsm/src/rfc_wtr3925_ssku_qfes_et_gsm_config_data_ag.c

./cdma/src/rfc_wtr3925_ssku_qfes_et_cdma_config_data_ag.c

./wcdma/src/rfc_wtr3925_ssku_qfes_et_wcdma_config_data_ag.c

./lte/src/rfc_wtr3925_ssku_qfes_et_lte_config_data_ag.c

./tdscdma/src/rfc_wtr3925_ssku_qfes_et_tdscdma_config_data_ag.c

一一将上表中参数与代码rf_card_wtr3925_ssku_qfes_et_tx0_模式频段_device_info中的RFDEVICE_PA Port项比对,如果不一致,修改代码。以GMS 850频段为例:

表格参数:

使用的PA是RF7459,port参数如下表。

GMSK/EDGE LB

HPM

0x44

9

MPM

0x45

LPM

0x46

ULPM

0x47

对应代码:

填上DEVICE_MODULE_TYPE_INSTANCE、MID、PID、PORT。其中DEVICE_MODULE_TYPE_INSTANCE是850频段使用到的PA数量。

猜你喜欢

转载自blog.csdn.net/qq_36662437/article/details/81207163
RF
今日推荐