日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高通APQ8074 spi 接口配置

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高通APQ8074 spi 接口配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高通APQ8074 spi 接口配置


8074 平臺含有兩個BLSP(BAM Low-Speed Peripheral) , 每一個BLSP含有兩個QUP, 每一個QUP可以被配置為I2C, SPI, UART, UIM接口, BLSP是高通對于低速接口的一種管理方式。


每個QUP是和特定的引腳相關的, 如下圖所示,比如下面的引腳是屬于BLSP8的, 也就是第二個BLSP的第二個QUP,?



注意這些引腳只能被配置到第二個BLSP的第2個QUP上,可以通過繼續查看高通相關資料


QUP的中斷相關信息



得到這些信息后,如果只是要將SPI配置成FIFO模式,而不是BAM模式,需要修改如下文件

diff --git a/arch/arm/boot/dts/msm8974.dtsi b/arch/arm/boot/dts/msm8974.dtsi
index 4178acf..649aa87 100644
--- a/arch/arm/boot/dts/msm8974.dtsi
+++ b/arch/arm/boot/dts/msm8974.dtsi
@@ -20,6 +20,7 @@
? ? ? ? aliases {
? ? ? ? ? ? ? ? spi0 = &spi_0;
? ? ? ? ? ? ? ? spi7 = &spi_7;
+ ? ? ? ? ? ? ? spi8 = &spi_8;
? ? ? ? ? ? ? ? sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
? ? ? ? ? ? ? ? sdhc2 = &sdhc_2; /* SDC2 SD card slot */
? ? ? ? ? ? ? ? sdhc3 = &sdhc_3; /* SDC3 SDIO slot */
@@ -888,6 +889,27 @@
? ? ? ? ? ? ? ? qcom,master-id = <86>;
? ? ? ? };
?
+ ? ? ? spi_8: spi@f9964000 {
+ ? ? ? ? ? ? ? compatible = "qcom,spi-qup-v2";
+ ? ? ? ? ? ? ? reg = <0xf9964000 0x1000>;
+ ? ? ? ? ? ? ? interrupts = <0 102 0>;
+ ? ? ? ? ? ? ? spi-max-frequency = <19200000>;
+ ? ? ? ? ? ? ? #address-cells = <1>;
+ ? ? ? ? ? ? ? #size-cells = <0>;
+ ? ? ? ? ? ? ? qcom,gpio-clk ?= <&msmgpio 48 0>; /* CLK */
+ ? ? ? ? ? ? ? qcom,gpio-miso = <&msmgpio 46 0>; /* MISO */
+ ? ? ? ? ? ? ? qcom,gpio-mosi = <&msmgpio 45 0>; /* MOSI */
+ ? ? ? ? ? ? ? qcom,gpio-cs0 = <&msmgpio 47 0>;
+
+ ? ? ? ? ? ? ? qcom,master-id = <84>;
+
+ ? ? ? ? ? ? ? spidev@0 { //Slave driver and CS ID
+ ? ? ? ? ? ? ? ? ? ? ? compatible = "qcom,spi_name"; //Manufacture, and Mode
+ ? ? ? ? ? ? ? ? ? ? ? reg = <0>; //Same as CS ID
+ ? ? ? ? ? ? ? ? ? ? ? spi-max-frequency = <3200000>; //Max Frequency for Device
+ ? ? ? ? ? ? ? };
+ ? ? ? };
+
? ? ? ? qcom,clock-krait@f9016000 {
? ? ? ? ? ? ? ? compatible = "qcom,clock-krait-8974";
? ? ? ? ? ? ? ? reg = <0xf9016000 0x20>,

/*使能 spi驅動, 可以修改spidev.c的 compatible 把名字修改為device tree相同的名字,之后kernel會掛在這個設備到spi總線,dev目錄下將會出現spidev8.0的設備節點*/

diff --git a/arch/arm/configs/msm8974_defconfig b/arch/arm/configs/msm8974_defconfig
index a12538a..74c51e6 100755
--- a/arch/arm/configs/msm8974_defconfig
+++ b/arch/arm/configs/msm8974_defconfig
@@ -315,7 +315,7 @@ CONFIG_I2C_CHARDEV=y
?CONFIG_I2C_QUP=y
?CONFIG_SPI=y
?CONFIG_SPI_QUP=y
-CONFIG_SPI_SPIDEV=m
+CONFIG_SPI_SPIDEV=y
?CONFIG_SPMI=y
?CONFIG_SPMI_MSM_PMIC_ARB=y
?CONFIG_MSM_QPNP_INT=y

修改gpio SPI屬性,注意GPIO的function不要和已經注冊的function 沖突

diff --git a/arch/arm/mach-msm/board-8974-gpiomux.c b/arch/arm/mach-msm/board-8974-gpiomux.c
index cec1a8f..6d67f18 100755
--- a/arch/arm/mach-msm/board-8974-gpiomux.c
+++ b/arch/arm/mach-msm/board-8974-gpiomux.c
@@ -683,6 +683,35 @@ static struct msm_gpiomux_config msm_blsp_configs[] __initdata = {
? ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_SUSPENDED] = &gpio_suspend_config[0],
? ? ? ? ? ? ? ? },
? ? ? ? },
+
+ ? ? ? {
+ ? ? ? ? ? ? ? .gpio = 45, ? ? ?/* BLSP2 QUP1 SPI_DATA_MOSI */
+ ? ? ? ? ? ? ? .settings = {
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_ACTIVE] = &gpio_spi_config,
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_SUSPENDED] = &gpio_suspend_config[1],
+ ? ? ? ? ? ? ? },
+ ? ? ? },
+ ? ? ? {
+ ? ? ? ? ? ? ? .gpio = 46, ? ? ?/* BLSP2 QUP1 SPI_DATA_MISO */
+ ? ? ? ? ? ? ? .settings = {
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_ACTIVE] = &gpio_spi_config,
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_SUSPENDED] = &gpio_suspend_config[1],
+ ? ? ? ? ? ? ? },
+ ? ? ? },
+ ? ? ? {
+ ? ? ? ? ? ? ? .gpio = 48, ? ? ?/* BLSP2 QUP1 SPI_CLK */
+ ? ? ? ? ? ? ? .settings = {
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_ACTIVE] = &gpio_spi_config,
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_SUSPENDED] = &gpio_suspend_config[0],
+ ? ? ? ? ? ? ? },
+ ? ? ? },
+ ? ? ? {
+ ? ? ? ? ? ? ? .gpio = 47, ? ? ?/* BLSP2 QUP1 SPI_CS0_N */
+ ? ? ? ? ? ? ? .settings = {
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_ACTIVE] = &gpio_spi_config,
+ ? ? ? ? ? ? ? ? ? ? ? [GPIOMUX_SUSPENDED] = &gpio_suspend_config[0],
+ ? ? ? ? ? ? ? },
+ ? ? ? },
?};


diff --git a/arch/arm/mach-msm/clock-8974.c b/arch/arm/mach-msm/clock-8974.c
index 128a363..adff33a 100755
--- a/arch/arm/mach-msm/clock-8974.c
+++ b/arch/arm/mach-msm/clock-8974.c
@@ -4967,7 +4967,8 @@ static struct clk_lookup msm_clocks_8974_common[] __initdata = {
? ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup1_i2c_apps_clk.c, ""),
? ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup1_spi_apps_clk.c, ""),
? ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup2_i2c_apps_clk.c, ""),
- ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup2_spi_apps_clk.c, ""),
+ ? ? ? CLK_LOOKUP("iface_clk", gcc_blsp2_ahb_clk.c, "f9964000.spi"),
+ ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup2_spi_apps_clk.c, "f9964000.spi"),
? ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup3_i2c_apps_clk.c, ""),
? ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup3_spi_apps_clk.c, ""),
? ? ? ? CLK_LOOKUP("core_clk", gcc_blsp2_qup4_i2c_apps_clk.c, ""),


最后注意下使能的spidev.c設備驅動,這個驅動也需要修改spi_qsd.c 保存實際傳輸數據長度的actual_lenght字段不會被賦值,需要對spidev.c文件進行少許的修改

diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
index aaf0265..efb7d07 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c

@@ -198,14 +204,14 @@ spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
?
? ? ? ? mutex_lock(&spidev->buf_lock);
? ? ? ? status = spidev_sync_read(spidev, count);
- ? ? ? if (status > 0) {
+ ? ? ? if (status >= 0) {
? ? ? ? ? ? ? ? unsigned long ? missing;
?
- ? ? ? ? ? ? ? missing = copy_to_user(buf, spidev->buffer, status);
- ? ? ? ? ? ? ? if (missing == status)
+ ? ? ? ? ? ? ? missing = copy_to_user(buf, spidev->buffer, count);
+ ? ? ? ? ? ? ? if (missing == count)
? ? ? ? ? ? ? ? ? ? ? ? status = -EFAULT;
? ? ? ? ? ? ? ? else
- ? ? ? ? ? ? ? ? ? ? ? status = status - missing;
+ ? ? ? ? ? ? ? ? ? ? ? status = count - missing;
? ? ? ? }
? ? ? ? mutex_unlock(&spidev->buf_lock);

之后可以通過打開dev/spidev8.0文件進行SPI設備的讀寫測試,需要注意的是,如果你用dragonboard, 需要注意一下電平轉換芯片的電壓,一定要在PMIC中時能對應的電壓。

總結

以上是生活随笔為你收集整理的高通APQ8074 spi 接口配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 最近2019中文字幕大全第二页 | 老司机狠狠爱 | 动漫av网| 深夜激情网站 | 欧美巨乳在线 | 日日夜夜精品免费 | 亚洲色图第一页 | 日本免费在线一区 | 日本在线看 | 激情综合图区 | a视频| 五月婷婷亚洲综合 | 99热这里只有精品3 成年人黄色网址 | 婷婷九月丁香 | 69视频在线观看 | 欧美性生活一区二区 | av网站在线免费看 | 91看黄| 一区二区三区四区视频在线观看 | 国产在线视频一区 | 日本视频网站在线观看 | 青青草综合网 | 国产无套内射又大又猛又粗又爽 | 国产嫩草视频 | 97成人在线观看 | 日韩在线观看视频免费 | 成人av资源在线 | 精品人人妻人人澡人人爽牛牛 | 国产探花一区二区 | 全肉的吸乳文 | 国产99久一区二区三区a片 | 国产真人无码作爱视频免费 | 欧美成人精品一区二区三区 | 中文字幕第二页 | 99r在线视频 | 欧美日韩中文在线 | 国产理论影院 | 国产丝袜久久 | 国产精品免费一区二区三区四区 | 国产女人在线 | 日韩 在线 | 色盈盈影院 | 日本乱码一区 | 四虎福利视频 | 一区二区国产电影 | 亚洲 欧洲 日韩 | 韩国av三级 | 国产高清免费观看 | 一区二区在线观看免费 | 狠狠搞狠狠干 | 国产一区二区免费在线 | 中国一级黄色大片 | 男人的天堂网av | 中文字幕在线高清 | 国产精品久久99 | 久久综合久久综合久久 | av777777| 毛片视频在线免费观看 | 国产区免费观看 | 人妻精品无码一区二区 | av不卡网站 | 在线理论视频 | 亚洲a精品 | 久久久久噜噜噜亚洲熟女综合 | 大尺度做爰无遮挡露器官 | 免费看黄在线 | 国产精品无码一区二区三区三 | 国产永久毛片 | 精品国产免费人成在线观看 | 韩日午夜在线资源一区二区 | 亚洲中文字幕一区二区 | 老司机深夜免费福利 | 91在线日韩 | 欧美精品免费一区二区三区 | 精品人妻一区二区三区视频 | 99热6这里只有精品 三级av在线免费观看 | 人人91| 欧美一级一级一级 | 五月涩 | 鲁一鲁色一色 | 中文字幕久久综合 | 久久大陆| 特级a毛片| 亚洲天堂网一区二区 | 午夜色网| 欧美日本一区二区三区 | 日产久久视频 | 日韩精品久久久 | 2023国产精品 | 久久日视频 | 日日操天天操夜夜操 | 亚洲麻豆一区 | 三级在线观看网站 | 亚洲精品日韩精品 | 日韩激情视频在线 | 色福利hd写真video | 亚洲无吗一区二区三区 | 欧美亚洲综合网 | 国产无遮挡又黄又爽免费视频 |