如何移植MT3332
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
如何移植MT3332
[SOLUTION]
1. 修改projectConfig.mk文件
mtk_gps_CHIP=MTK_GPS_MT3332
MTK_GPS_SUPPORT=yes
2. 通过dws文件配置GPS LNA管脚。到底需要配置哪些管脚,请参考
alps\mediatek\custom\$project\kernel\core\src\board.c文件中的
mt3332_gps_ext_power_on接口都有设置哪些GPIO。要配置这个接口设置的所有GPIO口。
3. 修改alps\mediatek\custom\$project\cgen\cfgdefault\CFG_GPS_Default.h文件中
stGPSConfigDefault变量中的各个字段,使得和硬件上一直。

注:如果是Phone Project请额外做如下动作
1.alps\mediatek\config\<Project>\init.project.rc
# GPS
chown gps gps /dev/gps
chown gps gps /dev/stpgps
chown gps gps /sys/class/gpsdrv/gps/pwrctl
chown gps gps /sys/class/gpsdrv/gps/suspend
chown gps gps /dev/stpgps
chown gps gps /dev/ttyMT1
chown gps gps /sys/class/gpsdrv/gps/pwrctl
chown gps gps /sys/class/gpsdrv/gps/suspend
chown gps gps /sys/class/gpsdrv/gps/state
chown gps gps /sys/class/gpsdrv/gps/pwrsave
chown gps gps /sys/class/gpsdrv/gps/status
chmod 0660 /dev/ttyMT1
chmod 0660 /dev/stpgps
2.alps\mediatek\custom\<Project>\cgen\cfgdefault\CFG_GPS_Default.h
ap_nvram_gps_config_struct stGPSConfigDefault =
{
/* "/dev/ttyMT1" */
{'/','d','e','v
','/','s','t','p','g','p','s',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
/* 0:s/w, 1:none, 2:h/w */
1,
/* 26MHz */
26000000,
/* 500ppb */
#if defined MTK_GPS_MT6628
2000,
#else
500,
#endif
Change to
ap_nvram_gps_config_struct stGPSConfigDefault =
{
#if defined MTK_GPS_MT3332
/* "/dev/ttyMT0" */
{'/','d','e','v
','/','t','t','y','M','T','1',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
#else
{'/','d','e','v
','/','s','t','p','g','p','s',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
#endif
/* 0:s/w, 1:none, 2:h/w */
1,
/* 26MHz */
26000000,
/* 500ppb */
#if (defined (MTK_GPS_MT3332) || defined (MTK_GPS_MT6628))
2000,
#else
500,
#endif
3.alps\mediatek\custom\<Project>\kernel\core\src\board.c
/*=======================================================================*
/
/* Board Specific Devices */
/*=======================================================================*
/
/*GPS driver*/
/*FIXME: remove mt3326 notation */
struct mt3326_gps_hardware mt3326_gps_hw = {
.ext_power_on = NULL,
.ext_power_off = NULL,
};
Change to
/*=======================================================================*
/
/* Board Specific Devices */
/*=======================================================================*
/
/*GPS driver*/
/*FIXME: remove mt3326 notation */
#ifdef MTK_GPS_SUPPORT
#if defined(MTK_GPS_MT6620)||defined(MTK_GPS_MT6628)
struct mt3326_gps_hardware mt3326_gps_hw = {
.ext_power_on = NULL,
.ext_power_off = NULL,
};
#endif
#if defined(MTK_GPS_MT3332)
static int mt3332_gps_ext_power_on(int state)
{
printk("MT3332 gps power on %s, %d\n\n\n\n\n\n\n\n", __func__, __LINE__);
mt_set_gpio_mode(GPIO_GPS_LNA_PIN, GPIO_GPS_LNA_PIN_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_LNA_PIN, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_LNA_PIN, 1);
mt_set_gpio_mode(GPIO_GPS_EN_MT3332, GPIO_GPS_EN_MT3332_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_EN_MT3332, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_EN_MT3332, 1);
// mt_set_gpio_mode(GPIO_GPS_FRAM_SYNC_MT3332,
GPIO_GPS_FRAM_SYNC_MT3332_M_GPS_SYNC);
return 0;
}
static int mt3332_gps_ext_power_off(int force)
{
printk("MT3332 gps power off %s, %d\n\n\n\n\n\n\n\n", __func__, __LINE__);
mt_set_gpio_mode(GPIO_GPS_EN_MT3332, GPIO_GPS_EN_MT3332_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_EN_MT3332, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_EN_MT3332, 0);
mt_set_gpio_mode(GPIO_GPS_LNA_PIN, GPIO_GPS_LNA_PIN_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_LNA_PIN, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_LNA_PIN, 0);
// mt_set_gpio_mode(GPIO_GPS_FRAM_SYNC_MT3332,
GPIO_GPS_FRAM_SYNC_MT3332_M_GPIO);
// mt_set_gpio_dir(GPIO_GPS_FRAM_SYNC_MT3332, GPIO_DIR_OUT);
// mt_set_gpio_out(GPIO_GPS_FRAM_SYNC_MT3332, 0);
return 0;
}
struct mt3326_gps_hardware mt3326_gps_hw = {
.ext_power_on = mt3332_gps_ext_power_on,
.ext_power_off = mt3332_gps_ext_power_off,
};
#endif
#endif
如何移植MT3332
[SOLUTION]
1. 修改projectConfig.mk文件
mtk_gps_CHIP=MTK_GPS_MT3332
MTK_GPS_SUPPORT=yes
2. 通过dws文件配置GPS LNA管脚。到底需要配置哪些管脚,请参考
alps\mediatek\custom\$project\kernel\core\src\board.c文件中的
mt3332_gps_ext_power_on接口都有设置哪些GPIO。要配置这个接口设置的所有GPIO口。
3. 修改alps\mediatek\custom\$project\cgen\cfgdefault\CFG_GPS_Default.h文件中
stGPSConfigDefault变量中的各个字段,使得和硬件上一直。

注:如果是Phone Project请额外做如下动作
1.alps\mediatek\config\<Project>\init.project.rc
# GPS
chown gps gps /dev/gps
chown gps gps /dev/stpgps
chown gps gps /sys/class/gpsdrv/gps/pwrctl
chown gps gps /sys/class/gpsdrv/gps/suspend
chown gps gps /dev/stpgps
chown gps gps /dev/ttyMT1
chown gps gps /sys/class/gpsdrv/gps/pwrctl
chown gps gps /sys/class/gpsdrv/gps/suspend
chown gps gps /sys/class/gpsdrv/gps/state
chown gps gps /sys/class/gpsdrv/gps/pwrsave
chown gps gps /sys/class/gpsdrv/gps/status
chmod 0660 /dev/ttyMT1
chmod 0660 /dev/stpgps
2.alps\mediatek\custom\<Project>\cgen\cfgdefault\CFG_GPS_Default.h
ap_nvram_gps_config_struct stGPSConfigDefault =
{
/* "/dev/ttyMT1" */
{'/','d','e','v
','/','s','t','p','g','p','s',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
/* 0:s/w, 1:none, 2:h/w */
1,
/* 26MHz */
26000000,
/* 500ppb */
#if defined MTK_GPS_MT6628
2000,
#else
500,
#endif
Change to
ap_nvram_gps_config_struct stGPSConfigDefault =
{
#if defined MTK_GPS_MT3332
/* "/dev/ttyMT0" */
{'/','d','e','v
','/','t','t','y','M','T','1',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
#else
{'/','d','e','v
','/','s','t','p','g','p','s',0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0},
#endif
/* 0:s/w, 1:none, 2:h/w */
1,
/* 26MHz */
26000000,
/* 500ppb */
#if (defined (MTK_GPS_MT3332) || defined (MTK_GPS_MT6628))
2000,
#else
500,
#endif
3.alps\mediatek\custom\<Project>\kernel\core\src\board.c
/*=======================================================================*
/
/* Board Specific Devices */
/*=======================================================================*
/
/*GPS driver*/
/*FIXME: remove mt3326 notation */
struct mt3326_gps_hardware mt3326_gps_hw = {
.ext_power_on = NULL,
.ext_power_off = NULL,
};
Change to
/*=======================================================================*
/
/* Board Specific Devices */
/*=======================================================================*
/
/*GPS driver*/
/*FIXME: remove mt3326 notation */
#ifdef MTK_GPS_SUPPORT
#if defined(MTK_GPS_MT6620)||defined(MTK_GPS_MT6628)
struct mt3326_gps_hardware mt3326_gps_hw = {
.ext_power_on = NULL,
.ext_power_off = NULL,
};
#endif
#if defined(MTK_GPS_MT3332)
static int mt3332_gps_ext_power_on(int state)
{
printk("MT3332 gps power on %s, %d\n\n\n\n\n\n\n\n", __func__, __LINE__);
mt_set_gpio_mode(GPIO_GPS_LNA_PIN, GPIO_GPS_LNA_PIN_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_LNA_PIN, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_LNA_PIN, 1);
mt_set_gpio_mode(GPIO_GPS_EN_MT3332, GPIO_GPS_EN_MT3332_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_EN_MT3332, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_EN_MT3332, 1);
// mt_set_gpio_mode(GPIO_GPS_FRAM_SYNC_MT3332,
GPIO_GPS_FRAM_SYNC_MT3332_M_GPS_SYNC);
return 0;
}
static int mt3332_gps_ext_power_off(int force)
{
printk("MT3332 gps power off %s, %d\n\n\n\n\n\n\n\n", __func__, __LINE__);
mt_set_gpio_mode(GPIO_GPS_EN_MT3332, GPIO_GPS_EN_MT3332_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_EN_MT3332, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_EN_MT3332, 0);
mt_set_gpio_mode(GPIO_GPS_LNA_PIN, GPIO_GPS_LNA_PIN_M_GPIO);
mt_set_gpio_dir(GPIO_GPS_LNA_PIN, GPIO_DIR_OUT);
mt_set_gpio_out(GPIO_GPS_LNA_PIN, 0);
// mt_set_gpio_mode(GPIO_GPS_FRAM_SYNC_MT3332,
GPIO_GPS_FRAM_SYNC_MT3332_M_GPIO);
// mt_set_gpio_dir(GPIO_GPS_FRAM_SYNC_MT3332, GPIO_DIR_OUT);
// mt_set_gpio_out(GPIO_GPS_FRAM_SYNC_MT3332, 0);
return 0;
}
struct mt3326_gps_hardware mt3326_gps_hw = {
.ext_power_on = mt3332_gps_ext_power_on,
.ext_power_off = mt3332_gps_ext_power_off,
};
#endif
#endif
小编,按照这个步骤成功了吗?我们现在按照这个步骤,可以找到mt3332,shake成功,可还是没有报文数据等。
