2015-11-30 2 views
0

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

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

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

+0

* "В настоящее время я использую драйвер акции DaVinci-SPI (драйверы/СПИ/DaVinci-spi.c) который поставляется с linux 3.19. "* - В mainline нет такого файла. Некоторые драйверы используют как DT, так и структуру из файла платы для получения информации о конфигурации. – sawdust

+0

К сожалению, я имел в виду драйверы/spi/spi-davinci.c. Я не знал, что некоторые драйверы используют как DT, так и файл платы для получения информации о конфигурации. Я думал, что одной из целей DT является устранение необходимости в конкретных файлах платы. –

+0

* «Я думал, что одна из целей DT ...» * - Правда, но вы хотите обсудить намерение и то, что на самом деле было реализовано? FWIW Я использую SoCs у одного из DT-приемников DT (Atmel & Free Electrons), и это было еще несколько лет, прежде чем все платы и драйверы были 100% DT. – sawdust

ответ

0

Вот несколько руководящих принципов, чтобы достичь своей цели:

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

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

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

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

DMA Provider

DMA Client

Успехов

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