展锐平台 触摸调试TP bringup
前言
一般lcd和tp应该是一起点亮的,这里分开了,详细lcd点亮方法查看上一篇lcd bringup
参考修改目录
STEP1
把厂商给得驱动放入文件夹ker/kernel6.6/unisoc-modules/touchscreen/
修改对应的Kconfig和makefile,这里是tp驱动是否被加载和编译的关键文件
# # Unisoc touchscreen (NEW )configuration # config TOUCHSCREEN_ILITEK_V3_SPI tristate "ILITEK V3 SPI Support" help This is support ilitek v3 spi touchscreen. if you want to use ilitek v3 spi touchscreen. please say "m".# Makefile for the ILITEK touchscreen driver. ifneq ($(strip $(BSP_KERNEL_VERSION)),kernel5.15) BSP_MODULES_OUT := ${COMMON_OUT_DIR}/unisoc_modules/kernel6.1/touchscreen/ilitek BSP_KERNEL_PATH := ${ROOT_DIR}/kernel6.1 KO_MODULE_OUT := $(BSP_MODULES_OUT) else KO_MODULE_NAME := ilitek KO_MODULE_OUT := $(BSP_MODULES_OUT)/$(KO_MODULE_NAME) endif ccflags-y += -Wall ccflags-y += -I$(srctree)/drivers/unisoc_platform/nest/touchscreen/core/ KO_MODULE_KBUILD := $(CURDIR)/Kbuild .PHONY: modules modules_install clean modules: @mkdir -p $(KO_MODULE_OUT) && ln -snf $(KO_MODULE_KBUILD) $(KO_MODULE_OUT)/Kbuild @ln -snf $(CURDIR) $(KO_MODULE_OUT)/source $(MAKE) -C $(BSP_KERNEL_PATH) M=$(KO_MODULE_OUT) src=$(CURDIR) $@ modules_install: $(MAKE) -C $(BSP_KERNEL_PATH) M=$(KO_MODULE_OUT) $@ # Remove the out directory wholly clean: @#$(MAKE) -C $(BSP_KERNEL_PATH) M=$(KO_MODULE_OUT) src=$(CURDIR) $@ rm -rf $(KO_MODULE_OUT) ########################################################################## ilitek-y := \ ilitek_v3.o \ ilitek_v3_spi.o \ ilitek_v3_qcom.o \ ilitek_v3_ic.o \ ilitek_v3_touch.o \ ilitek_v3_mp.o \ ilitek_v3_hostdl.o \ ilitek_v3_node.o obj-$(CONFIG_TOUCHSCREEN_ILITEK_V3_SPI) += ilitek.omakefile建议参考同级目录的tp驱动
这里ilitek-y
表示:生成 ilitek.o 这个目标文件时,需要把这些 .o 合并进去。
STEP2
在此目录添加对应的dtsi
ker\kernel6.6\unisoc\arch\arm64\boot\dts\sprd\touchscreen
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) /* * Unisoc TP dts file * * Copyright (C) 2020, Unisoc Inc. * */ #include <dt-bindings/gpio/gpio.h> &spi3 { status = "ok"; #address-cells = <1>; #size-cells = <0>; /* Novatek device tree node */ touchpanel@0 { compatible = "tchip,ilitek"; /*pinctrl*/ pinctrl-names = "spi_di_0","spi_di_1", "spi_do_0","spi_do_1", "spi_clk_0","spi_clk_1", "spi_csn_0","spi_csn_1", "tp_extconf0","tp_extconf1"; pinctrl-0 = <&ilitek_spi_di_0>; pinctrl-1 = <&ilitek_spi_di_1>; pinctrl-2 = <&ilitek_spi_do_0>; pinctrl-3 = <&ilitek_spi_do_1>; pinctrl-4 = <&ilitek_spi_clk_0>; pinctrl-5 = <&ilitek_spi_clk_1>; pinctrl-6 = <&ilitek_spi_csn_0>; pinctrl-7 = <&ilitek_spi_csn_1>; pinctrl-8 = <&tp_extconf0>; pinctrl-9 = <&tp_extconf1>; reg = <0>; //Same as CS ID status = "ok"; spi-max-frequency = <25000000>; touch,irq-gpio = <&ap_gpio 19 GPIO_ACTIVE_HIGH>; touch,eic-irq-gpio = <&eic_async 18 GPIO_ACTIVE_HIGH>; //touch,reset-gpio = <&ap_gpio 29 GPIO_ACTIVE_HIGH>; wakeup-source; }; }; &pin_controller { ilitek_spi_di_0: tp_spi_di_default { pins = "UMS9360_SPI3_DI"; function = "func3"; }; ilitek_spi_di_1: tp_spi_di_active { pins = "UMS9360_SPI3_DI"; function = "func1"; }; ilitek_spi_do_0: tp_spi_do_default { pins = "UMS9360_SPI3_DO"; function = "func3"; }; ilitek_spi_do_1: tp_spi_do_active { pins = "UMS9360_SPI3_DO"; function = "func1"; }; ilitek_spi_clk_0: tp_spi_clk_default { pins = "UMS9360_SPI3_CLK"; function = "func3"; }; ilitek_spi_clk_1: tp_spi_clk_active { pins = "UMS9360_SPI3_CLK"; function = "func1"; }; ilitek_spi_csn_0: tp_spi_csn_default { pins = "UMS9360_SPI3_CSN0"; function = "func3"; }; ilitek_spi_csn_1: tp_spi_csn_active { pins = "UMS9360_SPI3_CSN0"; function = "func1"; }; tp_extconf0: extint0 { pins = "UMS9360_EXTINT2"; function = "func1"; }; tp_extconf1: gpio { pins = "UMS9360_EXTINT2"; function = "func4"; }; };需要注意这里的tp中断脚,有ap-gpio模式和eic_async中断模式后续调试双击唤醒有用!!!
STEP3
在对应的主dtsi中包含tp驱动dtsi
ker\kernel6.6\unisoc\arch\arm64\boot\dts\sprd\ums9360\
#include "../touchscreen/ums9360-touch_ilitek_spi_1600x2400.dtsi"STEP4
展锐平台tp最后跑的是\ker\kernel6.6\unisoc\drivers\unisoc_platform\nest\touchscreen
这里可以通过软链接/脚本的方式把ker\kernel6.6\unisoc-modules\touchscreen\ilitek挪过来
进入目录:
cd ker/kernel6.6/unisoc/drivers/unisoc_platform/nest/touchscreen执行:
ln -s ../../../../../unisoc-modules/touchscreen/ilitek ilitek然后确认:
即可
推上服务器的时候记得把软连接也加上
diff --git a/unisoc/drivers/unisoc_platform/nest/touchscreen/ilitek b/unisoc/drivers/unisoc_platform/nest/touchscreen/ilitek new file mode 120000 index 000000000..a3b5973dd --- /dev/null +++ b/unisoc/drivers/unisoc_platform/nest/touchscreen/ilitek @@ -0,0 +1 @@ +../../../../../unisoc-modules/touchscreen/ilitek/STEP5
加入编译链
unisoc/arch/arm64/configs/sprd_gki_qogirl8.fragment
添加Kconfig对应的宏
CONFIG_TOUCHSCREEN_ILITEK_V3_SPI=munisoc/unisoc_bazels/ums9360_user.bzl & unisoc/unisoc_bazels/ums9360_userdebug.bzl
添加对应的ko模块
"drivers/unisoc_platform/nest/touchscreen/ilitek/ilitek.ko",添加对应的Kconfig和makefile
/unisoc/drivers/unisoc_platform/Kconfig
source "drivers/unisoc_platform/nest/touchscreen/ilitek/Kconfig"/unisoc/drivers/unisoc_platform/Makefile
obj-$(CONFIG_TOUCHSCREEN_ILITEK_V3_SPI) += nest/touchscreen/ilitek/