一,移植REE 时,在kernel prboe SPI 通讯读取chip ID 时会概率性读取失败。导致的问题就是不能在kernel 里面读取id 来继续加载驱动或者卸载驱动并释放资源,从而达到兼容其他家的指纹目的。
二,展锐7731E REE 时在dts 兼容时不能向其他平台一样,分别定义各自dts文件, 需要写在同一个大括号内。如下使用spi1,compatible 以及 GPIO设定需要放在一起,否者无法:
&spi1 {
clocks = <&clk_ap_hs_spi>, <&clk_twpll_192m>,
<&clk_aon_eb0_gates 9>;
status = "okay";
};
&spi1 {
status = "okay";
spi@0 {
status = "okay";
compatible = "goodix,fingerprint","microarray,microarray-fp";
reg = <0>;
spi-max-frequency = <8000000>;
goodix,gpio_reset = <&ap_gpio 54 0>;
goodix,gpio_irq = <&ap_eic_async 11 0>;
microarray,gpio_reset = <&ap_gpio 54 0>;
microarray,gpio_irq = <&ap_eic_async 11 0>;
};
};
三,如上的写法,导致两家指纹使用的时同一个设备,导致必须得第一家指纹在probe加载时必须读取chip id, 读取chip 失败必须报异常,且返回失败,并释放相关资源,才会成功加载第二家指纹驱动的probe, 不然第二家指纹驱动无法加载成功。
四,但是因为有第一个问题,所以兼容后还有概率性失效的问题, 因此ree 无法兼容多家指纹,如需要兼容,需要调试展锐7731E平台自带的TEE 来进行兼容。
五,如果不需要兼容多家指纹,只有一家指纹,可以使用哦个REE。但是不要在probe当中去读取ID, 把读取ID的动作放在So库里面去完成。