Перейти к содержанию
    

Пытаюсь разобраться с device tree

Почему-то не смог найти готовый модуль умеющий заливать прошивку в fpga, решил написать свой.

 

Почитал про device tree, посмотрел набор готовых модулей. Вроде всё просто должно быть.

 

Споткнулся на spi-gpio :smile3046:

Описал всё по докам, написал заготовку модуля с заливкой файла в spi. Вроде работает, ногами правильно машет.

 

Кусок dts-а:

   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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваш случай сильно напоминает:

http://permalink.gmane.org/gmane.linux.por...m.kernel/349467

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ваш случай сильно напоминает:

http://permalink.gmane.org/gmane.linux.por...m.kernel/349467

Я так делал. В этом случае ругается на ranges;

Warning (ranges_format): /spi_test has empty "ranges" property but its #size-cells (0) differs from / (1)

Зачем оно там я не знаю. В доке к spi-gpio написано, что должен быть.

Но без ranges тоже работает и вроде не ругается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но без ranges тоже работает и вроде не ругается.

( Работает и не ругается.. значит тема закрыта :) )

 

О ranges тоже есть дискуссии:

https://lists.ozlabs.org/pipermail/devicetr...ber/001217.html

Мож., кто другой чего добавит..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

( Работает и не ругается.. значит тема закрыта :) )

Не закрыта :)

Неясным остался момент с отключением чипселекта. В коде spi-gpio упоминается, что чипселект может отсутствовать, но как это указать в dts файле, я найти не могу. Судя по другим докам из ядра отсутствующая нога вместо <&pio 10 0> описывается как <0>, но после такой записи модуль spi-gpio падает со страшной руганью.

 

О ranges тоже есть дискуссии:

https://lists.ozlabs.org/pipermail/devicetr...ber/001217.html

Мож., кто другой чего добавит..

Это же spi-gpio, откуда у него address space ? И про "потомков" подключенных к этому spi тот же вопрос.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пошарился в исходниках ядра. Насколько смог понять of_get_named_gpio() используемый spi-gpio для создания перечня чипселектов, не может выдать -1, который spi-gpio воспринимает как отсутствие чипселекта.

 

Есть способ создать чисто виртуальный pin чтобы подсунуть его вместо ненужного чипселекта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...