1. Modem部分
修改文件:
1) TLMMBspMsm_XXX.h
該文件定義了各個gpio的默認設置,如是否上拉,需要確認
BSP_GPIO_OUT_76 = GPIO_CFG(76, 0, BSP_GPIO_OUTPUT, BSP_GPIO_NO_PULL, BSP_GPIO_2MA, RMT_TO_ALL),
BSP_GPIO_OUT_80 = GPIO_CFG(80, 0, BSP_GPIO_OUTPUT, BSP_GPIO_NO_PULL, BSP_GPIO_2MA, RMT_TO_ALL),
2) TLMMBsp_XXX.c
將SLEEP_CONFIGS中的gpio編號設置爲0xFF
uint32 SLEEP_CONFIGS[TLMM_BSP_NUM_GPIO] =
{
// GPIO_CFG(76, 0, BSP_GPIO_INPUT, BSP_GPIO_PULL_DOWN, BSP_GPIO_2MA, HAL_TLMM_OUTPUT_LOW), /* 76 */ //GPIO_CFG(80, 0, BSP_GPIO_INPUT, BSP_GPIO_PULL_DOWN, BSP_GPIO_2MA, HAL_TLMM_OUTPUT_LOW), /* 80 */
GPIO_CFG(0xFF, 0, BSP_GPIO_INPUT, BSP_GPIO_PULL_DOWN, BSP_GPIO_2MA, HAL_TLMM_OUTPUT_LOW), /* 76 */
GPIO_CFG(0xFF, 0, BSP_GPIO_OUTPUT, BSP_GPIO_NO_PULL, BSP_GPIO_2MA, HAL_TLMM_OUTPUT_LOW), /*80*/
}
將PRIMARY_CONFIGS中的對應管腳設置爲輸出
uint32 PRIMARY_CONFIGS[TLMM_BSP_NUM_GPIO] =
{
BSP_GPIO_OUT_76,
BSP_GPIO_OUT_80,
}
將TLMM_OWNERS中對應的管腳設置爲
TLMM_BSP_OwnerProcType TLMM_OWNERS[TLMM_BSP_NUM_GPIO] =
{
TLMM_OWNER_PERIPHERAL, /* 76 */
TLMM_OWNER_PERIPHERAL, /* 80 */
}
2. AP部分
修改文件:
1) Board-trebon.c 增加對應的device結構體(如藍牙設備使用了普通gpio作爲i2c接口)
/*
I2c-gpio.c文件中定義了名字爲"i2c-gpio"的driver
static struct platform_driver i2c_gpio_driver = {
.driver = {
.name = "i2c-gpio",
.owner = THIS_MODULE,
},
.probe = i2c_gpio_probe,
.remove = __devexit_p(i2c_gpio_remove),
};
*/
static struct i2c_gpio_platform_data bt_i2c_gpio_data = {
.sda_pin = GPIO_BT_SDA, //GPIO_76設置gpio管腳
.scl_pin = GPIO_BT_SCL, //GPIO_80
.udelay = 1,
};
static struct platform_device bt_i2c_gpio_device = {
.name = "i2c-gpio", //這裏的設備名和driver的名字保持一致
.id = 5, //和其他設備共享一個以"i2c-gpio"爲名字的driver, 這裏和其他設備的id要不一樣,如觸摸屏可能是4
.dev = {
.platform_data = &bt_i2c_gpio_data,
},
};
將device加入到surf_ffa_devices列表裏面
static struct platform_device *surf_ffa_devices[] __initdata = {
&bt_i2c_gpio_device,
}
在i2c設備初始化函數msm_device_i2c_init()中加入初始化配置
static void __init msm_device_i2c_init(void)
{
gpio_tlmm_config(GPIO_CFG(GPIO_BT_SDA, 0, GPIO_CFG_OUTPUT,
GPIO_CFG_PULL_UP, GPIO_CFG_2MA),GPIO_CFG_ENABLE);
gpio_tlmm_config(GPIO_CFG(GPIO_BT_SCL, 0, GPIO_CFG_OUTPUT,
GPIO_CFG_PULL_UP, GPIO_CFG_2MA),GPIO_CFG_ENABLE);
}