Хочу прикрутить по SPI АЦП. В линукс есть драйвер.
От АЦП поступает прерывание, по которому нужно забирать данные.
Соотвественно в файле борды(в моём случае board-at91g45.c) нужно инициализировать SPI устройство задействовав поле структуры
1) Что нужно указать? Можно ли просто указать GPIO? Или нужно как-то указать прерывание?
2) Требуется ли какая-либо отдельная инициализация для самой системы прерываний?
Что за соседние файлы вы имеете ввиду?
не в одной структуре, описывающей SPI не задействовано прерывание.
Вопрос:
1) если напишу просто:
...
.irq = AT91_PIN_PA31,
...
это будет справедливо? или нужно как-то именно пин прерывания указать?
2) вот пример для Blackfin
...
.irq = IRQ_PH6,
...
Нашёл в файле ядра irqs.h коментарий:
"IRQ interrupt symbols are the AT91xxx_ID^ symbols for IRQs handled directly through the AIC, or else the AT91_PIN_* symbols in file for ones handled indirectly as GPIOs.
We make provision for 5 banks of GPIO."
Я так пониамю можно смело писать
.irq = AT91_PIN_PA31,
обычно в ядре в каталоге с файлом платы есть еще какое-то количество файлов - я о них..
вполне можно попробовать - все зависит от смышлености драйвера вашего ацп.. можно попробовать так или так (примеры из "соседнего" файла board-usb-a926x.c), поправив имена и значения под свой драйвер..
кстати, если у вас 9g45, то в ядре может быть реализована поддержка ads7846 - там вроде spi-gpio + прерывание с чипа..
Дабы не плодить темы, пытаюсь собрать ядро с драйвермо АЦП и вот что пишет:
include/linux/spi/ad7606.h:53: error: expected specifier-qualifier-list before 'u16'
include/linux/spi/ad7606.h:67: error: field 'poll_work' has incomplete type
include/linux/spi/ad7606.h:68: error: expected specifier-qualifier-list before 'wait_queue_head_t'
include/linux/spi/ad7606.h:88: warning: 'struct iio_dev' declared inside parameter list
include/linux/spi/ad7606.h:88: warning: its scope is only this definition or declaration, which is probably not what you want
include/linux/spi/ad7606.h:89: warning: 'struct iio_dev' declared inside parameter list
include/linux/spi/ad7606.h:91: error: expected ';', ',' or ')' before '*' token
Никак не пойму в чём дело. Драйвер "от производителя"
так в том то и дело, что непонятно почему такие варнинги и ошибки вылезли.
я так понял там с дефайнами проблемы. Скорее всего драйвер на сайте AnalogDevices заточен под Blackfin и для AT91 нужно рукми править некоторые дефайны (например u16)