SPRD芯片安卓平台TP调试笔记
本文档以展锐平台SC9863A1为基础,屏幕以FT8057S为基础,调试屏幕的TP。
本文档以展锐平台SC9863A1为基础,屏幕以FT8057S为基础,调试屏幕的TP。
一、原理图

以上图片主要关注TP的int、reset、接口方式(I2C或SPI)
二、GPIO口配置
2.1使用工具配置初始化

使用以上工具设置GPIO,主要配置:gpio属性
根据以上原理图可知需要配置以下IO
SPI(I2C):SPI1
TP_RESET:EXTINT1(GPIO145)
TP_INIT:EXTINT0(GPIO144)
{REG_PIN_SD2_CLK, BITS_PIN_AF(1)},
{REG_MISC_PIN_SD2_CLK, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPD|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z},//TP_SPI_CLK
...
{REG_PIN_SD2_D0, BITS_PIN_AF(1)},
{REG_MISC_PIN_SD2_D0, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPD|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z},//TP_SPI_MOSI
{REG_PIN_SD2_CMD, BITS_PIN_AF(1)},
{REG_MISC_PIN_SD2_CMD, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPD|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z},//TP_SPI_MISO
{REG_PIN_SD2_D3, BITS_PIN_AF(1)},
{REG_MISC_PIN_SD2_D3, BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPD|BIT_PIN_SLP_AP|BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z},//TP_SPI_CSN
2.2将IO口信息配置到代码中
在kernel阶段使用GPIO,linux都是需要在dts内配置信息,然后在驱动代码内去申请IO故需要在以下文件内配置bsp\kernel5.15\kernel5.15\arch\arm64\boot\dts\sprd\touchscreen\sp9863a-spi1-gpio144-145-tp.dtsi
以下为原厂给的示例代码
Example of qualcomm platform:
I2C Interface:
i2c@f9927000 {
focaltech@38{
compatible = "focaltech,fts";
reg = <0x38>;
interrupt-parent = <&msm_gpio>;
interrupts = <13 0x02>;
//vdd-supply = <&pm8916_l15>;
//vcc_i2c-supply = <&pm8916_l16>;
focaltech,reset-gpio = <&msm_gpio 12 0x01>;
focaltech,irq-gpio = <&msm_gpio 13 0x02>;
focaltech,max-touch-number = <10>;
focaltech,display-coords = <0 0 1079 1919>;
pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
pinctrl-0 = <&ts_int_active &ts_reset_active>;
pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
pinctrl-2 = <&ts_release>;
/*
focaltech,have-key;
focaltech,key-number = <3>;
focaltech,keys = <139 102 158>;
focaltech,key-x-coords = <200 600 800>;
focaltech,key-y-coords = <2000 2000 2000>;
*/
};
};
SPI Interface:
spi@78b9000 {
focaltech@0 {
compatible = "focaltech,fts";
reg = <0x0>;
spi-max-frequency = <6000000>;
interrupt-parent = <&msm_gpio>;
interrupts = <13 0x2>;
focaltech,reset-gpio = <&msm_gpio 12 0x01>;
focaltech,irq-gpio = <&msm_gpio 13 0x02>;
focaltech,max-touch-number = <10>;
focaltech,display-coords = <0 0 1079 1919>;
pinctrl-names = "pmx_ts_active","pmx_ts_suspend","pmx_ts_release";
pinctrl-0 = <&ts_int_active &ts_reset_active>;
pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
pinctrl-2 = <&ts_release>;
};
};
我们根据以上代码,修改为sprd格式的代码如下
&spi1 {
status = "ok";
#address-cells = <1>;
#size-cells = <0>;
/* Novatek device tree node */
touchpanel@0 {
power-dependency = <&dpu>;
compatible = "focaltech,fts";
reg = <0>; //Same as CS ID
status = "ok";
spi-max-frequency = <8000000>; //4800000,9600000,15000000,19200000
/*------------------ FT8057S_spi ------------------*/
focaltech,irq-gpio = <&ap_gpio 144 GPIO_ACTIVE_HIGH>;
focaltech,reset-gpio = <&ap_gpio 145 GPIO_ACTIVE_HIGH>;
focaltech,max-touch-number = <10>;
focaltech,display-coords = <0 0 720 1612>;
};
};
三、将文件合入代码编译
在文件夹(vendor\bsp\modules\kernel5.15\touchscreen)添加驱动文件夹(focaltech_ft8057s)修改文件名为focaltech_ft8057s_spi
修改Kbuild和Makefile文件,去掉I2C部分,或者修改makefile为只编译SPI部分文件(该处的驱动文件可能需要反复修改)
在文件
device\sprd\vnd_mpool\module\vnd_others\bsp\mfeature\kernel\kernel5.15\msoc\sharkl3\ko\arm64\km.mk
$(BSP_KERNEL_MODULES_OUT)/focaltech_ft8057s_ts.ko \
device\sprd\vnd_mpool\module\vnd_others\bsp\mfeature\kernel\kernel5.15\msoc\sharkl3\ko\modules.load
focaltech_ft8057s_ts.ko
bsp\kernel5.15\kernel5.15\build.config\build.config.gki.aarch64.s9863a_user
bsp\kernel5.15\kernel5.15\build.config\build.config.gki.aarch64.s9863a_userdebug
../modules/kernel5.15/touchscreen/focaltech_ft8057s_spi
内添加编译的ko文件
在文件夹device\sprd\vnd_mpool\module\vendor\ts\firmware内添加TP固件FT8057S_firmware.bin
并在文件device\sprd\sharkl3\s9863a1h10\module\ts\md.mk内添加
PRODUCT_COPY_FILES += \
$(VND_MPOOL)/module/vendor/ts/firmware/FT8057S_firmware.bin:$(TARGET_COPY_OUT_ODM)/firmware/focaltech_ts_fw_.bin
其中focaltech_ts_fw_.bin名称与驱动代码内的名称相关。
完整编译后下载调试
参考文献
103455《LCD-TP客制化指导V1.0.mp4》
29887《Touch Panel客制化指导手册V1.8.pdf》
104594《dts介绍.MP4》
103652《Linux DTS介绍V1.0.pdf》
fae提供的:FT8057S-SPI驱动.zip
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)