2015-08-28 2 views
7

Я ранее работал над ARM Специфические драйверы платформы, недавно перенесенные на платформу Intel Atom. В ARM для добавления платформ использовались arch/arm/boot/dts/xx.dts и arch/arm/mach-xx/. Я не вижу эти файлы или папки на x86. Когда я вошел в arch/x86/..., нет файлов dts или файлов платформы.Разница в написании драйвера устройства платформы для x86 и ARM

Как я могу добавить информацию о своем устройстве на платформе, если я хочу добавить свое платформенное устройство в платформу Intel Atom? Где я могу получить файлы dts, специфичные для x86 (при условии, что, хотя dts не является конкретной какой-либо архитектурой)?

+0

Существует пример, 'арка/x86/Платформа/CE4100/falconfalls.dts', ядро ​​версии 3,18. Может быть, это хорошее начало для вас. –

+0

Спасибо, Крис, для вашего комментария, это единственное место, где я нашел. Но есть много советов на базе Intel. Но я нашел, что они используют информацию acpi, аналогичную dts. Но я не уверен, как эта информация acpi отправляется в linux. Если я хочу добавить любое устройство платформы. Как я могу добавить. – anikhan

ответ

5

Есть две новые функции, которые позволяют одновременно иметь один драйвер для миров x86 и ARM. Во-первых, это метод _DSD в ACPI, который позволяет поставщику предоставлять любые свойства устройства, необходимые им для правильной работы 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"); 
+0

Спасибо Andy, откуда и как эта информация ACPI приходит в ядро ​​Linux – anikhan

+0

Если это вопрос частично в приведенном выше тексте. Метод '_DSD' специально разработан для предоставления парам свойств ключ-значение свойств устройства для ОС. – 0andriy

+0

Информация о _DSD (ACPI) отправляется с любого загрузочного кода/или явно компилируется с ядром. В ARM, как правило, мы будем генерировать dtb из dts и передавать это ядру из uboot. – anikhan

Смежные вопросы