Поддерживаются ли передачи DMA с помощью драйвера устройства davinci-spi, настроенного с помощью devicetree?

Я пытаюсь использовать DMA для программирования FPGA, подключенного к шине SPI OMAP-L138, но безуспешно.

В настоящее время я использую стандартный драйвер davinci-spi (drivers / spi / spi-davinci.c), который поставляется с Linux 3.19. Конфигурация FPGA прошла успешно (без включенного DMA), но она очень медленная. Я использую дерево устройств для настройки интерфейса SPI.

Я хотел бы использовать DMA для повышения производительности, однако, глядя на исходный код spi-davinci.c и его привязки к дереву устройств, драйвер, похоже, не поддерживает DMA при настройке с деревом устройств. Я правильно понимаю? Если да, то есть ли какие-либо планы по поддержке передачи DMA с использованием драйвера SPI от davinci, когда также используется дерево устройств?


person Bob Brickhouse    schedule 30.11.2015    source источник
comment
В настоящее время я использую стандартный драйвер davinci-spi (drivers / spi / davinci-spi.c), который поставляется с linux 3.19. - В основной версии такого файла нет. Некоторые драйверы используют как DT, так и структуру из файла платы для получения информации о конфигурации.   -  person sawdust    schedule 01.12.2015
comment
Извините, я имел в виду драйверы / spi / spi-davinci.c. Я не понимал, что некоторые драйверы используют как DT, так и файл платы для получения информации о конфигурации. Я думал, что одна из целей DT - устранить необходимость в файлах, специфичных для платы.   -  person Bob Brickhouse    schedule 01.12.2015
comment
Я думал, что одна из целей DT ... - Верно, но вы хотите обсудить намерение в сравнении с тем, что на самом деле было реализовано? FWIW Я использую SoC от одного из первых пользователей DT (Atmel и Free Electrons), и прошло еще несколько лет, прежде чем все платы и драйверы стали на 100% DT.   -  person sawdust    schedule 01.12.2015
comment
Хорошо знать. Я думаю, это проясняет мою путаницу в состоянии драйвера davinci SPI.   -  person Bob Brickhouse    schedule 01.12.2015


Ответы (1)


Вот несколько советов по достижению вашей цели:

Во-первых, проверьте, есть ли у SPI собственный механизм прямого доступа к памяти. Если это не так, возможно, на борту есть общий контроллер DMA. Вы можете проверить это, просмотрев таблицу данных SPI и схемы межсоединений платы.

Если ничего из вышеперечисленного не соответствует действительности, вы не можете использовать DMA с SPI.

Если у SPI есть собственный DMA, вам нужно написать для этого драйвер. Если на плате есть DMA, он, вероятно, используется другими компонентами, найдите драйвер dma_dngine для этого конкретного устройства. Затем вам нужно создать DMA-клиента для этого конкретного механизма DMA.

Пожалуйста прочти:

DMA Provider

DMA-клиент

Удачи

person stdcall    schedule 03.12.2015