AMD 为 Linux 贡献 eSPI 标准框架,统一支持 BIOS 与 TPM 通信
IT之家8月5日消息,当地时间8月4日,AMD向Linux内核提交了一组补丁,计划为eSPI(Enhanced Serial Peripheral Interface,增强型串行外设接口)标准建立全新的Linux内核子系统。
此前AMD已在部分硬件中采用eSPI,但Linux内核一直缺乏统一、通用的eSPI框架,此次补丁正是为了解决这一问题。
IT之家注:eSPI技术最初由英特尔开发,作为传统LPC(Low Pin Count)总线的一种替代方案,用于连接BIOS、系统控制器及TPM(受信任的平台模块)等外设。
与传统SPI不同,eSPI在单一物理链路上承载四个独立逻辑通道:Peripheral通道(承载主机I/O和内存周期)、Virtual Wire通道(传输电源时序、中断等逻辑信号)、OOB通道(隧道传输SMBus/I2C管理消息)和Flash Access通道(提供对SPI闪存的访问)。
在补丁设计思路上,AMD工程师Krishnamoorthi M曾向内核社区征询,这套eSPI方案应基于现有SPI子系统扩展,还是作为一个全新的总线类型。他最终选择后者,即建立全新的eSPI总线框架。
AMD方面解释称,eSPI的异步特性、多通道模型及能力协商机制与传统SPI的同步单通道传输模型不匹配。该补丁集共包含4个补丁,其中第4个为AMD eSPI控制器驱动,代码量约599行,已在AMDI0070平台上完成测试验证。
eSPI能力协商机制是控制器与目标设备在链路启动时通过交换能力寄存器来确定I/O模式、时钟频率和CRC校验的过程。该框架遵循Linux标准的bus/device/driver模型,并通过sysfs暴露链路的协商状态。
当前这套eSPI子系统存在一些已知限制:由于AMD代码仅使用ACPI,暂不支持Device Tree;从设备枚举需手动完成;部分通道操作和ALERT#中断处理将在后续补丁中补充。随着补丁不断完善,该子系统有望为AMD及其他eSPI硬件提供统一、可扩展的支持框架。