- 低速 I/O 接口的工作频率低于 SoC 中的高速接口。Qualcomm 通用外设(QUP)v3 串行引擎是一个硬件核心,支持以下低速外设接口: 这些低速接口与低速外设通信,例如传感器接口设备、Bluetooth® 无线技术设备、显示或触摸接口设备。
- 高速 I/O 接口包括以下外设接口: 高速 I/O 接口用于连接高速设备,例如固态硬盘、网卡、外部显卡。
外设接口软件栈
下图显示了外设接口的软件栈。
/dev 节点或子系统 API)与外设通信。流程如下:
-
应用层
- 应用程序使用标准用户空间接口发出请求。
- 请求通过系统调用进入内核。
-
内核核心框架
- 内核将请求路由到相关的子系统,例如:
- I2C
- SPI
- I3C
- TTY
- 该子系统执行以下功能:
- 提供协议感知的抽象
- 管理同步和并发
- 集成电源管理钩子
- 为客户端提供统一的编程接口
- 内核将请求路由到相关的子系统,例如:
-
协议控制器驱动程序
- 核心框架调用协议控制器驱动程序。
- 驱动程序将框架级操作转换为硬件特定的命令。
-
QUPv3 GENI 串行引擎(Qualcomm 平台)
- 控制器驱动程序对 QUPv3 GENI 串行引擎进行编程。
- GENI 使用以下方式实现所选协议(I2C、SPI、I3C 或 UART):
- 已配置的传输模式
- 协议固件
-
GENI 硬件执行
- 执行寄存器级操作。
- 在系统与外部设备之间移动数据。
- 驱动程序和设备生命周期管理
- 并发处理
- 整个软件栈的电源状态协调
图:外设接口软件栈高层结构(低层视图)
QUP v3
Qualcomm 使用 QUP v3——一种高度灵活且可编程的硬件——来支持各种串行接口。有关 QUP v3 的更多信息,请参阅以下资源:注意
- boot 和 aDSP 子系统的源代码面向具有授权访问权限的许可开发人员提供。
- 请参阅 Qualcomm Linux 支持的硬件 SoC。
注意在本指南中,
<chipset> 指 QCS6490、QCS5430、Qualcomm Dragonwing™ IQ-9075、Qualcomm Dragonwing™ IQ-8275 或 Qualcomm Dragonwing™ IQ-615。例如,对于 arch/arm64/boot/dts/qcom/<chipset>.dts,相应的设备树源(DTS)文件位于 https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts 或 https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/sa8775p.dtsi 或 https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git/tree/arch/arm64/boot/dts/qcom/qcs615.dtsi?h=arm64-for-6.16。
