高通qcom sdm450/msm8953平台 fingerprint指纹模组移植

本文详细指导了在MSM8953主板上集成指纹传感器的步骤,包括驱动加载、硬件配置、设备树修改、权限设置、QSEE SDK移植和调试流程,涉及SPI通信、设备树节点、SELinux权限和内存调整等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:查看主板原理图获取硬件信息

系统硬件平台是sdm450/msm8953

在主板原理图上可以找到指纹相关的原理图部分如下:

该IC使用两路电, LDO6 1.8v, LDO10 2.8v。

  • SPI通讯,追到模块上是 BLSP7 spi7 这组管脚,具体的管脚信息如下:
  • FP_RST 脚硬件上悬空。
  • FP_INIT 中断引脚,追到模块上,是gpio44。

2:驱动加载

2.1:添加驱动 code

a)配置编译选项
modified:   msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
modified:   msm-3.18/arch/arm64/configs/msmcortex_defconfig
modified:   msm-3.18/drivers/input/Kconfig
modified:   msm-3.18/drivers/input/Makefile
--- a/kernel/msm-3.18/arch/arm64/configs/msmcortex_defconfig
+++ b/kernel/msm-3.18/arch/arm64/configs/msmcortex_defconfig
+CONFIG_MICROARRAY_FINGERPRINT=y
--- a/kernel/msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
+++ b/kernel/msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig
+CONFIG_MICROARRAY_FINGERPRINT=y
--- a/kernel/msm-3.18/drivers/input/Kconfig
+++ b/kernel/msm-3.18/drivers/input/Kconfig
+config MICROARRAY_FINGERPRINT
+       tristate "MICROARRAY fingerprint IC"
+       depends on SPI_MASTER
+       help
+         MICROARRAY fingerprint ic
+#yujixuan modify
+source "drivers/input/fingerprint/Kconfig"

--- a/kernel/msm-3.18/drivers/input/Makefile
+++ b/kernel/msm-3.18/drivers/input/Makefile
+obj-$(CONFIG_MICROARRAY_FINGERPRINT)           += fingerprint/
b)添加驱动源码文件
fingerprint
├── Kconfig
├── Makefile
└── microarray
    ├── ioctl_cmd.h
    ├── Kconfig
    ├── madev.c
├── madev.h
├── Makefile
    ├── qualcomm-settings.c
└── qualcomm-settings.h

2.1.1:配置设备树信息

在获取硬件的硬件信息中,可知该指纹使用的 spi是 spi7, msm8953平台默认情况下,spi7是被配置在TZ端安全环境中, 被限制不能在AP侧使用的,

如果我们在AP侧使用spi7,需要解除限制,并且修改设备树种的 spi7 相关配置。

a)添加spi7 的设备树配置
--- a/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
+++ b/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
@@ -1543,6 +1543,67 @@
+       /* start for fingerprint spi end */
+       spi7 {
+           spi7_default: spi7_default {
+               /* active state */
+               mux {
+                   /* MOSI, MISO, CLK */
+                   pins = "gpio137", "gpio138", "gpio135";
+                   function = "blsp_spi7";
+               };
+               config {
+                   pins = "gpio137", "gpio138", "gpio135";
+                   drive-strength = <12>; /* 12 MA */
+                   bias-disable = <0>; /* No PULL */
+               };
+           };
+           spi7_sleep: spi7_sleep {
+               /* suspended state */
+               mux {
+                   /* MOSI, MISO, CLK */
+                   pins = "gpio137", "gpio138", "gpio135";
+                   function = "gpio";
+               };
+               config {
+                   pins = "gpio137", "gpio138", "gpio135";
+                   drive-strength = <2>; /* 2 MA */
+                   bias-pull-down; /* PULL Down */
+               };
+           };
+           spi7_cs0_active: cs0_active {
+               /* CS */
+               mux {
+                   pins = "gpio136";
+                   function = "blsp_spi7";
+               };
+               config {
+                   pins = "gpio136";
+                   drive-strength = <2>;
+                   bias-disable = <0>;
+               };
+           };
+           spi7_cs0_sleep: cs0_sleep {
+               /* CS */
+               mux {
+                   pins = "gpio136";
+                   function = "gpio";
+               };
+               config {
+                   pins = "gpio136";
+                   drive-strength = <2>;
+                   bias-disable = <0>;
+               };
+           };
+       };
--- a/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
   aliases {       
+       spi7 = &spi_7;
    };
+   spi_7: spi@7af7000 { /* BLSP1 QUP7 */
+       compatible = "qcom,spi-qup-v2";
+       #address-cells = <1>;
+       #size-cells = <0>;
+       reg-names = "spi_physical", "spi_bam_physical";
+       reg = <0x7af7000 0x600>,
+           <0x7AC4000 0x1f000>;
+       interrupt-names = "spi_irq", "spi_bam_irq";
+       interrupts = <0 301 0>, <0 239 0>;
+       spi-max-frequency = <19200000>;
+       pinctrl-names = "spi_default", "spi_sleep";
+       pinctrl-0 = <&spi7_default &spi7_cs0_active>;
+       pinctrl-1 = <&spi7_sleep &spi7_cs0_sleep>;
+       clocks = <&clock_gcc clk_gcc_blsp2_ahb_clk>,
+           <&clock_gcc clk_gcc_blsp2_qup3_spi_apps_clk>;
+       clock-names = "iface_clk", "core_clk";
+       qcom,infinite-mode = <0>;
+       qcom,use-bam;
+       qcom,use-pinctrl;
+       qcom,ver-reg-exists;
+       qcom,bam-consumer-pipe-index = <8>;
+       qcom,bam-producer-pipe-index = <9>;
+       qcom,master-id = <84>;
+       status = "disabled";
+   };
b)添加改指纹驱动设备树节点 
如果是REE环境 spi在AP端控制,配置如下:
--- a/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/kernel/msm-3.18/arch/arm64/boot/dts/qcom/msm8953.dtsi
+ +&spi_7 {
+   status = "ok";
+   microarray_fp@0 {
+       status = "ok";
+       compatible = "microarray,fingerprint";
+       reg = <0x0>;
&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值