MTK不同平台以及内核版本修改会有不同,本文仅供参考
Kernel:
1、添加驱动
kernel-3.18/drivers/input/touchscreen/mediatek
2、修改Makefile:
kernel-3.18/drivers/input/touchscreen/mediatek/Makefile
obj-$(CONFIG_TOUCHSCREEN_MTK_XXXX) +=TP驱动文件夹名字
3、修改Kconfig
kernel-3.18/drivers/input/touchscreen/mediatek/Kconfig
config TOUCHSCREEN_MTK_XXXX
bool "TOUCHSCREEN_MTK_XXXX for Mediatek package"
default n
help
Say Y here if you have TOUCHSCREEN_MTK_XXXX touch panel.
If unsure, say N.
To compile this dirver as a module, choose M here: the
module will be called.
4、配置config文件
kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_debug_defconfig
kernel-3.18/arch/arm64/configs/tek6735m_65_d_n_defconfig
//跟上面定义的宏要对应上,不然无法编译到驱动
CONFIG_TOUCHSCREEN_MTK_XXXX=y
5、配置dts:
kernel-3.18/arch/arm64/boot/dts/tek6735m_65_d_n.dts
&touch {
tpd-resolution = <480 800>;
use-tpd-button = <0>;
tpd-key-num = <3>;
tpd-key-local= <139 172 158 0>;
tpd-key-dim-local = <90 883 100 40 230 883 100 40 370 883 100 40 0 0 0 0>;
tpd-max-touch-num = <5>;
tpd-filter-enable = <1>;
tpd-filter-pixel-density = <93>;
tpd-filter-custom-prameters = <0 0 0 0 0 0 0 0 0 0 0 0>;
tpd-filter-custom-speed = <0 0 0>;
pinctrl-names = "default", "state_eint_as_int", "state_eint_output0", "state_eint_output1",
"state_rst_output0", "state_rst_output1";
pinctrl-0 = <&CTP_pins_default>;
pinctrl-1 = <&CTP_pins_eint_as_int>;
pinctrl-2 = <&CTP_pins_eint_output0>;
pinctrl-3 = <&CTP_pins_eint_output1>;
pinctrl-4 = <&CTP_pins_rst_output0>;
pinctrl-5 = <&CTP_pins_rst_output1>;
status = "okay";
};
&i2c1 {
cap_touch_xxx@5a {
compatible = "mediatek,cap_touch_xxx";//跟驱动中的compatible对应
reg = <0x5a>;//不同TP地址不一样,对应修改即可
};
};
Device:
注意事项:有些还需要配置Projectconfig才能编译,猜测跟上面的Makefile有关,但具体暂未深究,有大佬知道可以说下~
device/teksun/tek6735m_65_d_n/
CUSTOM_KERNEL_TOUCHPANEL=驱动文件夹名字