为x86和ARM编写平台设备驱动程序的区别

时间:2015-08-28 07:07:10

标签: linux linux-kernel linux-device-driver

我之前曾在ARM特定平台驱动程序上工作,最近转向基于Intel Atom。在ARM上,曾经有arch/arm/boot/dts/xx.dtsarch/arm/mach-xx/用于添加平台设备。我没有在x86上看到这些文件或文件夹。当我进入arch/x86/...时,没有dts文件或平台文件。

如果我想将平台设备添加到Intel Atom平台,我如何添加平台设备信息?我在哪里可以获得特定于x86的dts文件(假设即使dts不是特定的任何架构)?

1 个答案:

答案 0 :(得分:7)

有两个新功能允许您同时拥有一个用于x86和ARM世界的驱动程序。首先是ACPI中的_DSD方法,它允许供应商提供使IP正常工作所需的任何设备属性。第二部分是Linux内核中的统一设备属性接口(查看 drivers / base / property.c )。因此,如果您的设备需要让我们说clock-frequency属性,您只需在驱动程序中写入如下内容:

u32 clock_freq;
int err;

err = device_property_read_u32(…, &clock_freq);
if (err)
  dev_err(…, "A mandatory property not found!\n");