Files
kernel_drivers_examples/debug/regulator
2016-11-03 11:48:40 +00:00
..
2016-11-03 11:48:40 +00:00
2016-11-03 11:48:40 +00:00
2016-11-03 11:48:40 +00:00
2016-11-02 13:54:21 +00:00
2016-11-03 11:48:40 +00:00
2016-11-01 17:02:45 +00:00
2016-11-03 11:48:40 +00:00
2016-11-02 11:48:33 +00:00
2016-11-01 17:02:45 +00:00

Regulator Usage

硬件连接和设备树配置

以下图所示的一个TP模块连接方式来说明

vcc_tp_1

vcc_tp_2

VCC_TP给TP供电,由PMU上的LDO提供

TP的device tree如下描述

goodix_ts@5d {
    compatible = "goodix,gt9xx";
    status = "okay";
    reg = <0x5d>;
    VCC_TP-supply = <&ldo4_reg>;
}

其中VCC_TP-supply这样写比较规范

VCC_TP和原理图上标的对应(纯粹为了好记,让代码和图对应)

supply是固定后缀,可以从代码里得知

为什么对应ldo4_reg?

regulator的寄存器从0开始计算

OUT8 对应就对应regulator 7

而regulator 7 的标号就是ldo4_reg,这里是device tree的语法

ldo4_reg:regulator@7 {
	reg = <0x7>;
	regulator-compatible = "act_ldo4";
	regulator-name = "act_ldo4";
	regulator-min-microvolt = <0x325aa0>;
	regulator-max-microvolt = <0x325aa0>;
	linux,phandle = <0xc2>;
	phandle = <0xc2>;
};

测试方法

在shell下输入下面的命令测试

while true
do
insmod regulator.ko
sleep 5
rmmod regulator
sleep 5
done

ACT8846驱动

框架图如下

BLOCK DIAGRAM

由图可知

REG[1, 4]对应DCDC[1, 4]

REG[5, 13]对应LDO[1, 9]

驱动代码中的voltage map可以参考手册的table 5

 600, 625, 650, 675, 700, 725, 750, 775,
 800, 825, 850, 875, 900, 925, 950, 975,
 1000, 1025, 1050, 1075, 1100, 1125, 1150,
 1175, 1200, 1250, 1300, 1350, 1400, 1450,
 1500, 1550, 1600, 1650, 1700, 1750, 1800,
 1850, 1900, 1950, 2000, 2050, 2100, 2150,
 2200, 2250, 2300, 2350, 2400, 2500, 2600,
 2700, 2800, 2900, 3000, 3100, 3200,
 3300, 3400, 3500, 3600, 3700, 3800, 3900,

Table5