Почему-то не смог найти готовый модуль умеющий заливать прошивку в fpga, решил написать свой.
Почитал про device tree, посмотрел набор готовых модулей. Вроде всё просто должно быть.
Споткнулся на spi-gpio

Описал всё по докам, написал заготовку модуля с заливкой файла в spi. Вроде работает, ногами правильно машет.
Кусок dts-а:
CODE
ahb {
apb {
pinctrl@fffff200 {
spi_test {
pinctrl_spi_test: spi_test-0 {
atmel,pins =
<AT91_PIOA 17 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
AT91_PIOA 19 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
AT91_PIOA 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
AT91_PIOA 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
};
};
};
};
};
spi_test {
compatible = "spi-gpio";
#address-cells = <0x1>;
ranges;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spi_test>;
gpio-sck = <&pioA 17 0>;
gpio-miso = <&pioA 19 0>;
gpio-mosi = <&pioA 21 0>;
cs-gpios = <&pioA 23 0>;
num-chipselects = <1>;
fpga_load_test {
compatible = "xlnx,fpga_load";
spi-max-frequency = <500000>;
reg = <0>;
};
};
При компиляции dts-а выдаёт:
Код
Warning (reg_format): "reg" property in /spi_test/fpga_load_test has invalid length (4 bytes) (#address-cells == 1, #size-cells == 1)
Warning (avoid_default_addr_size): Relying on default #size-cells value for /spi_test/fpga_load_test
Что ему не нравится? Что надо сделать чтобы не ругался?
Попытался отцепить чип селект, вроде как spi-gpio такое позволяет. Ничего не вышло. Компилится без варнингов, но при загрузке модуля ругается:
Код
bus: 'platform': really_probe: probing driver spi_gpio with device spi_test
spi_gpio: probe of spi_test rejects match -19
-19 это ENODEV
Как быть?
P. S. Экспериментирую на борде atmel sama5d3x-ek. Весь софт самособранный при помощи buildroot.
Сообщение отредактировал Terminator - Dec 23 2014, 05:53