介绍
架构
OTP 驱动程序遵循 Linux NVMEM 框架,控制固件 OTP 控制器,并执行 OTP 的读写操作。OTP 软件架构如下面的图示所示。
OTP 驱动程序提供以下两种方式来控制硬件 OTP 设备:
对于用户空间,Linux NVMEM 框架通过 sysfs 设备为用户提供读写功能。
对于内核空间,Linux 驱动程序可以通过 NVMEM 单元函数控制 OTP 设备。
实现
OTP 驱动程序实现在如下文件:
驱动程序所在位置 |
介绍 |
---|---|
|
OTP 驱动程序 Kconfig |
|
OTP 驱动程序 Makefile |
|
OTP 驱动程序源代码 |
配置
编译配置
选择
。
APIs
用户空间接口(APIs)
正如上文提到的,Linux NVMEM 框架为用户空间提供了 sysfs 设备以控制 OTP 设备。目前,Realtek 的 OTP 驱动程序为用户空间提供了两个 sysfs 接口(/sys/bus/nvmem/devices/otp_raw0/nvmem
和 /sys/bus/nvmem/devices/otp_map0/nvmem
)来控制 OTP 设备。
otp_raw0
设备控制物理映射。otp_map0
设备控制逻辑映射。
演示的使用方法如下:
efuse rraw/rmap [addr hex] [bytes]
efuse wraw/wmap [addr hex] [bytes] [val hex]
例如:
从物理地址
0x07F4
到0x07F8
读取值:efuse rraw 7F4 4
将新值 0x021b1c1d 写入逻辑地址
0x01e0
到0x01e4
:efuse wmap 1e0 4 021b1c1d
参考 sources/development/cmds/efuse/efuse.c
获取更多细节。
如果您想禁用用户空间的 API,请在内核配置中禁用 sysfs 接口,如下所示:

内核空间接口(APIs)
对于内核空间,NVMEM 提供了 cell 机制供其他驱动程序读取或写入 OTP,例如:

驱动程序可以使用 NVMEM cell 函数来获取或设置相应的 OTP 值。