这次完成的任务是要使能高通8053平台的i2c和spi,主要做的工作就是在设备树文件中添加节点信息。主要的工作在于对设备树文件的修改,主要修改了msm8953-pinctrl.dtsi和msm8953.dtsi两个文件。
msm8953-pinctrl.dtsi是配置MSM8953芯片中的GPIO。在此文件中定义i2c使用哪个gpio。
因为引脚复用功能的存在,所以要先配置i2c的引脚复用功能,在msm8953-pinctrl.dtsi中进行如下配置:
i2c_4 {
i2c_4_active: i2c_4_active { /*i2c处于active状态*/
/* active state */
mux {
pins = "gpio14", "gpio15"; /*i2c有两根线,分别是SDA和SCL*/
/* SDA用到了gpio14,SCL用到了gpio15*/
function = "blsp_i2c4"; /*这个gpio组支持功能复用,在i2c_4_active中,gpio说明采用"blsp_i2c4"功能*/
};
config {
pins = "gpio14", "gpio15";
drive-strength = <2>; /*设置gpio14,gpio15这个pin脚组的驱动能力为2MA*/
bias-disable; /*选项有bias-pull-up、bias-pull-down和bias-disable。这里使用bias-disable,代表no-pull*/
};
};
i2c_4_sleep: i2c_4_sleep { /*i2c处于sleep状态*/
/* suspended state */
mux {
pins = "gpio14", "gpio15";
function = "gpio"; /*这时pins的功能设置为普通的gpio功能。这里体现出了pin脚的功能复用。*/
};
config {
pins = "gpio14", "gpio15";
drive-strength = <2>; /*驱动能力设置为2MA*/
bias-disable;
};
};
};
接下来,需要在文件msm8953.dtsi中添加一个新的i2c设备树节点:
根据spec获取物理地址,中断号等。
i2c_4: i2c@78b8000 { /* BLSP1 QUP4 */ /*i2c_4使用的是BLSP1 QUP4,对应的物理地址为0x78b8000*/
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;