Skip to the content.

SOC ID Framework

1. Introduction

驱动程序模型 SOC ID 框架能够提供有关运行时使用的特定 SoC 的标识信息,并且还提供来自阵列的一组标识信息的匹配。 这对于启用 SoC 变体之间存在的驱动程序中的小怪癖非常有用,而使用设备树标志来实现这些小怪癖是不切实际的。 它基于UCLASS_SOC。

UCLASS_SOC:

Configuration:

2. Implementing a UCLASS_SOC provider

该框架的目的是允许 UCLASS_SOC 提供程序驱动程序提供有关运行时使用的 SoC 的标识信息。 该框架允许驱动程序定义返回标识字符串的 soc_ops。 所有 soc_ops 不需要定义,可以保留为 NULL,在这种情况下,框架将返回 -ENOSYS 并且在执行 soc_device_match 时不考虑该值。

由驱动程序实现者决定如何确定返回的信息,但一般来说,同一 SOC 应始终返回同一组标识信息。 返回的信息必须采用 NULL 终止字符串的形式。

有关可用 soc_ops 的文档以及可返回值的预期含义,请参阅 include/soc.h。 有关 UCLASS_SOC 提供程序驱动程序示例,请参阅 drivers/soc/soc_sandbox.c。

3. Using a UCLASS_SOC driver

该框架提供了直接检索和使用标识字符串的能力。 它还能够使用 soc_device_match 从不同的 SoC 数据集列表中返回匹配项。

可以定义“struct soc_attr”数组,每个数组包含特定 SoC 的 ID 信息,当传递给 soc_device_match 时,列表中每个条目的标识符值将与正在使用的 UCLASS_SOC 驱动程序提供的值进行比较 。 soc_device_match 将返回列表中与所有非空值匹配的第一个条目。

该框架的各种用途的示例可以在 test/dm/soc.c 中找到。

4. Describing the device using device tree

chipid: chipid {
     compatible = "sandbox,soc";
};

DT 节点中所需要的只是与相应的 UCLASS_SOC 驱动程序兼容。