以psc5415a为例,分LK与kernel两部分驱动集成
一,kernel:
1 新建驱动文件夹与文件
alps/kernel-4.4/drivers/power/mediatek/charger/psc5415a.c
alps/kernel-4.4/drivers/power/mediatek/charger/psc5415a.h
2 添加编译开关
alps/kernel-4.4/arch/arm/configs/k39tv1_bsp_defconfig
添加:
CONFIG_CHARGER_PSC5415A=y
3 增加编译开关宏:
alps/kernel-4.4/drivers/power/mediatek/Kconfig
增加:
config CHARGER_PSC5415A
bool "Charger Driver for PSC5415A Charger IC"
default n
depends on MTK_SMART_BATTERY && MTK_SWCHR_SUPPORT
help
Say Y to enable
Halo PSC5415A driver.
It depends on config MTK_SMART_BATTERY
and config MTK_SWCHR_SUPPORT.
4 增加编译OBJ
alps/kernel-4.4/drivers/power/mediatek/charger/Makefile
增加:
obj-$(CONFIG_CHARGER_PSC5415A) += psc5415a.o
5 添加新充电IC节点,配置IIC总线地址
添加文件
alps/kernel-4.4/arch/arm/boot/dts/psc5415a.dtsi
具体内容初始化节点与IIC地址
/* Please set primary/secondary charger to corresponding I2C bus */
&i2c1 {
psc5415a@6a {
status = "okay";
compatible = "prisemi,psc5415a";
reg = <0x6a>;
};
};
alps/kernel-4.4/arch/arm/boot/dts/mt6739.dts
#ifdef CONFIG_CHARGER_PSC5415A
#include "psc5415a.dtsi"
#endif
二,bootloader:
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739/psc5415a.c
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739/include/platform/psc5415a.h
1 增加编译开关:
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/project/k39tv1_bsp.mk
增加:
MTK_PSC5415A_SUPPORT := yes
2 增加OBJ
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739/rules.mk
ifeq ($(MTK_PSC5415A_SUPPORT),yes)
OBJS += $(LOCAL_DIR)/psc5415a.o
DEFINES += MTK_PSC5415A_SUPPORT
endif
3 初始化充电IC
alps/vendor/mediatek/proprietary/bootable/bootloader/lk/platform/mt6739/mt_battery.c
增加头文件:
#if defined(MTK_PSC5415A_SUPPORT)
#include <platform/psc5415a.h>
#endif
增加初始化流程
#if defined(MTK_PSC5415A_SUPPORT)
psc5415a_hw_init();
psc5415a_charging_enable();
psc5415a_dump_register();
#endif
4 接下来就是调试下面两个LK初始化接口里的寄存器.
psc5415a_charging_enable();
psc5415a_dump_register();