最近porting一个fingerprint的spi设备到板子上,看了一下线路图,gpio8-gpio11,查了一下80-NM328里的p26说gpio8,9是BLSP 3
但是再看SP80-NU154-6SC发现没有BLSP 3的address,所以重新看HW给的gpio.exl,发现HW把BLSP 1的QUP 3非常像,于是就试一试
地址是0x78B7000
首先得新建一个SPI bus
@@ -51,6 +51,7 @@
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
sdhc2 = &sdhc_2; /* SDC2 SD card slot */
spi0 = &spi_0;
+ spi2 = &spi_2;/*matthew_xuan*/
};
memory {
@@ -2041,6 +2042,31 @@
qcom,master-id = <86>;
};
+
+ spi_2: spi@0x78B7000 { /* BLSP1 QUP3 matthew_xuan*/
+ compatible = "qcom,spi-qup-v2";
+ reg-names = "spi_physical", "spi_bam_physical";
+ reg = <0x78B7000 0x600>,
+ <0x7886000 0x1f000>;
+ interrupt-names = "spi_irq", "spi_bam_irq";
+ interrupts = <0 97 0>, <0 240 0>; //SP80-NU154-6SC里define
+ spi-max-frequency = <19200000>;
+ pinctrl-names = "spi_default", "spi_sleep";
+ pinctrl-0 = <&spi2_default &spi2_cs2_active>; //自己到msm8976-pinctrl.dtsi加
+ pinctrl-1 = <&spi2_sleep &spi2_cs2_sleep>; //自己到msm8976-pinctrl.dtsi加
+ clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp1_qup3_spi_apps_clk>; //到80-NU767-1的P84里的表格里看
+ 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>;//到80-NU767-1的P84里的表格里看
+ qcom,bam-producer-pipe-index = <9>;
+ qcom,master-id = <86>;
+ };
+
定义那些gpio
/*matthew_xuan*/
+ spi2_active {
+ /* MOSI, MISO, CLK */
+ qcom,pins = <&gp 8>, <&gp 9>, <&gp 11>;
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <1>;
+ label = "spi2-active";
+ /* active state */
+ spi2_default: spi2_default {
+ drive-strength = <12>; /* 12 MA */
+ bias-disable = <0>; /* No PULL */
+ };
+ };
+
+ spi2_suspend {
+ /* MOSI, MISO, CLK */
+ qcom,pins = <&gp 8>, <&gp 9>, <&gp 11>;
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <0>;
+ label = "spi2-suspend";
+ /* suspended state */
+ spi2_sleep: spi2_sleep {
+ drive-strength = <2>; /* 2 MA */
+ bias-pull-down; /* PULL Down */
+ };
+ };
+
+ spi2_cs0_active {
+ /* CS */
+ qcom,pins = <&gp 10>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "spi2-cs2-active";
+ spi2_cs2_active: cs2_active {
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+
+ spi2_cs0_suspend {
+ /* CS */
+ qcom,pins = <&gp 10>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <0>;
+ label = "spi2-cs2-suspend";
+ spi2_cs2_sleep: cs2_sleep {
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ /*matthew_xuan*/
+
+然后把device加进去
+&spi_2 { /* BLSP1 QUP3 */
+ validity@0 {
+ compatible = "validity,metallica";
+ reg = <0>;
+ interrupt-parent = <&msmgpio>;
+ interrupts = <106 0x8>;
+ spi-max-frequency = <4800000>;
+ rst-gpio = <&msmgpio 138 0>;
+ vdd-io-supply = <&pm8950_l6>;
+ /*vdd-phy-supply = <&pm8226_lvs1>;*/
+
+
+ };
但是再看SP80-NU154-6SC发现没有BLSP 3的address,所以重新看HW给的gpio.exl,发现HW把BLSP 1的QUP 3非常像,于是就试一试
地址是0x78B7000
首先得新建一个SPI bus
@@ -51,6 +51,7 @@
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
sdhc2 = &sdhc_2; /* SDC2 SD card slot */
spi0 = &spi_0;
+ spi2 = &spi_2;/*matthew_xuan*/
};
memory {
@@ -2041,6 +2042,31 @@
qcom,master-id = <86>;
};
+
+ spi_2: spi@0x78B7000 { /* BLSP1 QUP3 matthew_xuan*/
+ compatible = "qcom,spi-qup-v2";
+ reg-names = "spi_physical", "spi_bam_physical";
+ reg = <0x78B7000 0x600>,
+ <0x7886000 0x1f000>;
+ interrupt-names = "spi_irq", "spi_bam_irq";
+ interrupts = <0 97 0>, <0 240 0>; //SP80-NU154-6SC里define
+ spi-max-frequency = <19200000>;
+ pinctrl-names = "spi_default", "spi_sleep";
+ pinctrl-0 = <&spi2_default &spi2_cs2_active>; //自己到msm8976-pinctrl.dtsi加
+ pinctrl-1 = <&spi2_sleep &spi2_cs2_sleep>; //自己到msm8976-pinctrl.dtsi加
+ clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+ <&clock_gcc clk_gcc_blsp1_qup3_spi_apps_clk>; //到80-NU767-1的P84里的表格里看
+ 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>;//到80-NU767-1的P84里的表格里看
+ qcom,bam-producer-pipe-index = <9>;
+ qcom,master-id = <86>;
+ };
+
定义那些gpio
/*matthew_xuan*/
+ spi2_active {
+ /* MOSI, MISO, CLK */
+ qcom,pins = <&gp 8>, <&gp 9>, <&gp 11>;
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <1>;
+ label = "spi2-active";
+ /* active state */
+ spi2_default: spi2_default {
+ drive-strength = <12>; /* 12 MA */
+ bias-disable = <0>; /* No PULL */
+ };
+ };
+
+ spi2_suspend {
+ /* MOSI, MISO, CLK */
+ qcom,pins = <&gp 8>, <&gp 9>, <&gp 11>;
+ qcom,num-grp-pins = <3>;
+ qcom,pin-func = <0>;
+ label = "spi2-suspend";
+ /* suspended state */
+ spi2_sleep: spi2_sleep {
+ drive-strength = <2>; /* 2 MA */
+ bias-pull-down; /* PULL Down */
+ };
+ };
+
+ spi2_cs0_active {
+ /* CS */
+ qcom,pins = <&gp 10>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <1>;
+ label = "spi2-cs2-active";
+ spi2_cs2_active: cs2_active {
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+
+ spi2_cs0_suspend {
+ /* CS */
+ qcom,pins = <&gp 10>;
+ qcom,num-grp-pins = <1>;
+ qcom,pin-func = <0>;
+ label = "spi2-cs2-suspend";
+ spi2_cs2_sleep: cs2_sleep {
+ drive-strength = <2>;
+ bias-disable = <0>;
+ };
+ };
+ /*matthew_xuan*/
+
+然后把device加进去
+&spi_2 { /* BLSP1 QUP3 */
+ validity@0 {
+ compatible = "validity,metallica";
+ reg = <0>;
+ interrupt-parent = <&msmgpio>;
+ interrupts = <106 0x8>;
+ spi-max-frequency = <4800000>;
+ rst-gpio = <&msmgpio 138 0>;
+ vdd-io-supply = <&pm8950_l6>;
+ /*vdd-phy-supply = <&pm8226_lvs1>;*/
+
+
+ };
+};
上面所有的spec都在我的下载里,欢迎下载