一,概述
RK3588S Android12 SDK源码中kernel 版本为kernel-5.10,使用的是gf3626指纹模组。使用ree 进行spi 通讯。
指纹模组供电电压3.3V, SPI通讯电压1.8V, 最高通讯速率24M。
以此记录移植过程。
二,移植代码到kernel中
1,在kernel-5.10/drivers/input 中建立一个文件夹方入指纹代码。
digipro@P510:~/RK3588S/android12-rkr14.1-rk3588/kernel-5.10/drivers/input$ mkdir gf3626
digipro@P510:~/RK3588S/android12-rkr14.1-rk3588/kernel-5.10/drivers/input$ ls
gameport keyboard misc sensors tablet gf3626 joystick
Makefile remotectl serio touchscreen Kconfig mouse rmi4
2,修改当前目录的Makefile, 把gf3626 文件夹加入编译
digipro@P510:~/RK3588S/android12-rkr14.1-rk3588/kernel-5.10/drivers/input$ vim Makefile
obj-y += gf3626/
3, 进入gf3626 驱动文件夹编写Makefile, 将驱动文件加入编译。
digipro@P510:~/RK3588S/android12-rkr14.1-rk3588/kernel-5.10/drivers/input/gf3626$ ls
gf_common.c gf_common.h gf_common.o gf_platform.c gf_spi_access.c gf_spi_access.h Kconfig Makefile
digipro@P510:~/RK3588S/android12-rkr14.1-rk3588/kernel-5.10/drivers/input/gf3626$vim Makefile
obj-y += gf_common.o gf_spi_access.o gf_platform.o
4,在DTSI中添设置spi 设备对应的管脚 以及 中断 和 复位脚的设定。
从开发板外接是GPIO脚看,只有SPI0_M2可用,DTSI 添加内容如下,compatible 需要与kernel 里面的compatible 相同, 不然无法加载probe。 电源使用3.3V长供电,因此暂时不用测试电源脚。
digipro@P510:~/RK3588S/android12-rkr14.1-rk3588$ vim kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588s-lubancat-4.dtsi
&spi0 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&spi0m2_cs0 &spi0m2_pins>; //设定SPI 相关引脚
num-cs = <1>;
goodix_fp@0 {
compatible = "rockchip,fingerprint";
reg = <0>; //chip select 0:cs0 1:cs1
spi-max-frequency = <24000000>; //spi output clock
interrupt-parent = <&gpio3>;
interrupts = <RK_PD4 IRQ_TYPE_EDGE_FALLING>;
irq-gpios = <&gpio3 RK_PD4 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio3 RK_PD2 GPIO_ACTIVE_LOW>;
};
};
5,修改kernel 的 compatible 以及 中断 和 复位脚的名字 与 DTSI 一致
//compatible
static const struct of_device_id gf_of_match[] = {
{
.compatible = "rockchip,fingerprint", },
{
},
};
/*INT REST pins reference.*/
int gf_get_gpio_dts_info(struct gf_device