Драйвер кольцевого генератора
Меня попросили вызвать Кольцевой генератор в Linux. Для начала я попытался прочитать регистры управления и состояния (интересные биты) напрямую, и я могу получить доступ к ним с помощью devmem (используя физические адреса регистров). Существует два модуля кольцевого генератора 0 и 1. Каждый состоит из 4 кольцевых генераторов. Выход модуля 0 подает генератор случайных чисел. Модуль 1 используется для мониторинга процесса - пока нет большой информации по этому вопросу. Каждый модуль имеет отдельный набор регистров для управления, состояния и т. Д. К каждому кольцевому генератору прикреплен счетчик частоты, и я могу считать счетчик частоты из регистра счетчика счетчика частоты, когда соответствующим образом установлены управляющие регистры кольцевых генераторов.
Теперь я должен написать драйвер устройства для Кольцевого генератора для воспитательной цели. Что мне не совсем понятно, так это то, должен ли я в файле dts представлять Кольцевой генератор как источник синхронизации или рассматривать его как устройство платформы. Не удалось выяснить много информации о том, как Linux обрабатывает генератор колебаний. Должен ли я искать адрес устройства Кольцевого Генератора и попытаться добавить его как любую другую запись периферийного устройства платформы в файле dts. В этом я могу зарегистрировать его как устройство платформы в файле драйвера и управлять его регистрами с помощью функции зонда. Или я должен рассматривать это как источник часов? Однако из доступной документации я не вижу, что он используется в качестве источника синхронизации для любых других периферийных устройств. Кто-нибудь может пролить свет на это, пожалуйста? Любая помощь будет высоко оценена.
Благодарю.
С уважением
Вивек
1 ответ
Я использовал Кольцевой генератор в качестве драйвера платформы. Изменения dts/dtsi приведены ниже:
DTSI:
ring_osc: ring-oscillator@F00xxxxx {
compatible = "abc,abc-ring";
reg = <0xF00xxxxx 0x14>;
status = "disabled";
};
DTS:
&ring_osc {
status = "okay";
};
Драйвер, который я написал, просто настраивает генератор, используя его регистры конфигурации. Кроме того, предоставляет интерфейс sysfs для установки значений периода для счетчика частоты, который подключен к нему, и считывания счетчика частоты с счетчика частоты.