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);
}