1
离线
1
内核版本linux-zero-4.13.y.zip
基于i2c的AXP203电源管理芯片
在设备书中添加
};
axp209: axp209@34{
reg = <0x34>;
interrupt-parent=<&pio>;
interrupts=<1 2 IRQ_TYPE_EDGE_FALLING>;
/* focaltech,irq-gpio=<&pio 1 2 GPIO_ACTIVE_HIGH>;
focaltech,group-id=<1>;
focaltech,i2c-pull-up;*/
status="okay";
};
};
#include "axp209.dtsi"
&ohci0 {
这一段代表设备树中的i2c上的axp设备,其作用,是用于匹配内核中的AXP驱动,带有设备树的linux内核魅力所在
添加完之后接下来是linux内核的配置
执行make menuconfig
进入
Device Drivers --->
Industrial I/O support ---> 一种新的工业级iio文件,困扰了很久,axp的部分实现依赖于这个文件
Analog to digital converters --->
X-Powers AXP20X and AXP22X ADC driver 配置这个文件很有用途,因为我们使用的驱动就是依赖与此
然后返回到Device Drivers --->
Power supply class support --->
X-Powers AXP20X and AXP22X AC power supply driver
X-Powers AXP20X battery driver
AXP20x power supply driver
编译内核和dtb文件添加到下位机,此时驱动已经加载完成,
期间遇到的问题
具体的驱动文件目录在4.13中直接在内核源码根目录下直接搜索axp然后出来一大堆,一开始一直以为4.13里面没有像3.14那样提供axp驱动,只因为集成了一个iio文件而axp的device就在iio文件中
还有的就是在axp209.dtsi最初定义了初始的启动电压和电流,由于在自己的开发板上供电不足,所以启动到一半的时候会关机,将其注释掉便好,后面优化的的时候可以在根据自身硬件环境的支持去修改适配
具体注释如下
regulators {
/* Default work frequency for buck regulators */
x-powers,dcdc-freq = <1500>;
reg_dcdc2: dcdc2 {
regulator-name = "dcdc2";
};
reg_dcdc3: dcdc3 {
regulator-name = "dcdc3";
};
reg_ldo1: ldo1 {
/* LDO1 is a fixed output regulator */
regulator-always-on;
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
regulator-name = "ldo1";
};
reg_ldo2: ldo2 {
regulator-name = "ldo2";
};
reg_ldo3: ldo3 {
regulator-name = "ldo3";
};
reg_ldo4: ldo4 {
regulator-name = "ldo4";
};
将这一段话整个干掉
reg_ldo5: ldo5 {
regulator-name = "ldo5";
status = "disabled";
};
};
用户级的调试接口
路径
/sys/class/power_supply
具体功能接口功能参考axp power驱动应用说明(详细版)v1.1.pdf,这个文件在附录中
有些名字可能不一样,以为这个pdf是旧版本的axp驱动基于3.14的,个人体会是千万不要试图根据这个文档去编译内核,会死的很惨,因为两个内核中自定义的驱动实现函数很多方面都不一样
离线