今天在调试一个外设时,需要用vgp1控制,需要设置3.3v,一直没有输出来。6580 8.1平台tp默认是用vgp1控制的,用下面的代码是可以输出2.8v的
下面是ft的tp驱动部分
int fts_power_init(void)
{
int ret;
/*set TP volt*/
tpd->reg = regulator_get(tpd->tpd_dev, "vtouch");
ret = regulator_set_voltage(tpd->reg, 2800000, 2800000);
if (ret != 0) {
FTS_ERROR("[POWER]Failed to set voltage of regulator,ret=%d!", ret);
return ret;
}
ret = regulator_enable(tpd->reg);
if (ret != 0) {
FTS_ERROR("[POWER]Fail to enable regulator when init,ret=%d!", ret);
return ret;
}
return 0;
}
kernel-3.18\arch\arm\boot\dts\mt6580.dts
touch: touch@0 {
compatible = "mediatek,touch";
vtouch-supply = <&mt_pmic_vgp1_ldo_reg>;
};
为了保持代码的可移植性和方便查阅问题,没有采取在tp里面操作这个电压,而是在对应驱动里面去操作vgp1
按照tp的方法,加入如下代码:
kernel-3.18\arch\arm\boot\dts\mt6580.dts
breathled: breathled {
compatible = "mediatek,breathled";
mx9016-supply = <&mt_pmic_vgp1_ldo_reg>;
};
在对应驱动操作电压部分代码
static int breathled_probe(struct platform_device *pdev)
{
struct regulator *reg_mx9016;
//zxw open vgp1 注意要引入头文件#include <linux/regulator/consu