openharmony提供了hdf的驱动框架,今天以gt911触摸驱动的例子记录一下。首先hdf要加载进Linux的driver中,在Linux源码/driver/hdf目录有如下文件。
framwork和khdf两个软链接文件一定要链接成功。
在hdf的设备树中加入gt911的文件信息
/home/xu/openharmony/vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs
device_touch_chip :: device {device0 :: deviceNode {policy = 0;priority = 130;preload = 0;permission = 0660;moduleName = "HDF_TOUCH_GT911";serviceName = "hdf_touch_gt911_service";deviceMatchAttr = "zsj_gt911_5p5";}
然后加入针对触摸板硬件连接的信息。
/home/xu/openharmony/vendor/hihope/rk3568/hdf_config/khdf/input/input_config.hcs
root {input_config {touchConfig {touch0 {boardConfig {match_attr = "touch_device1";inputAttr {/* 0:touch 1:key 2:keyboard 3:mouse 4:button 5:crown 6:encoder */inputType = 0;solutionX = 1024;solutionY = 600;devName = "main_touch";}// Hi3516DV300-Runhe gt911--5p5 & 4p0busConfig {// 0:i2c 1:spibusType = 0;busNum = 1;clkGpio = 11;dataGpio = 12;i2cClkIomux = [0xfdd60000, 0x100];i2cDataIomux = [0xfdd60000, 0x100];}pinConfig {rstGpio = 20;intGpio = 13;rstRegCfg = [0xfdd60000, 0x100];intRegCfg = [0xfdd60000, 0x100];}powerConfig {/* 0:unused 1:ldo 2:gpio 3:pmic */vccType = 2;vccNum = 20; // gpio20vccValue = 1800;vciType = 1;vciNum = 12; // ldo12vciValue = 3300;}featureConfig {capacitanceTest = 0;gestureMode = 0;gloverMOde = 0;coverMode = 0;chargerMode = 0;knuckleMode = 0;}}chipConfig {template touchChip {match_attr = "";chipName = "gt911";vendorName = "zsj";chipInfo = "AAAA11222"; // 4-ProjectName, 2-TP IC, 3-TP Module/* 0:i2c 1:spi*/busType = 0;deviceAddr = 0x5D;/* 0:None 1:Rising 2:Failing 4:High-level 8:Low-level */irqFlag = 2;maxSpeed = 400;chipVersion = 0; //parse Coord TypeApowerSequence {/* [type, status, dir , delay]<type> 0:none 1:vcc-1.8v 2:vci-3.3v 3:reset 4:int<status> 0:off or low 1:on or high 2:no ops<dir> 0:input 1:output 2:no ops<delay> meanings delay xms, 20: delay 20ms*/powerOnSeq = [4, 0, 1, 5,3, 0, 1, 10,3, 1, 1, 60,4, 2, 0, 50];suspendSeq = [3, 0, 2, 10];resumeSeq = [3, 1, 2, 10];powerOffSeq = [3, 0, 2, 10,1, 0, 2, 20];}}chip0 :: touchChip {match_attr = "zsj_gt911_5p5";chipInfo = "ZIDN45100"; // 4-ProjectName, 2-TP IC, 3-TP ModulechipVersion = 0; //parse point by TypeA}
}
hdf中关于触摸的kconfig和Makefile文件。
/home/xu/openharmony/drivers/adapter/khdf/linux/model/input
hdf触摸驱动源文件。
/home/xu/openharmony/drivers/framework/model/input/driver/touchscreen
之后就是驱动的移植了,和Linux很类似,只是架构中调用的函数不同。也可以在以上目录中添加自己的驱动。