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

OpenWRT, Allwinner H3: нет SPI в /dev

доброго времени!
мало проблем было с t113, появилась ещё одна)
итак, есть nanopi neo core на H3
нужно поднять emmc, spi1, i2c1

с первыми двумя, вроде как, проблем не возникло -- прописал в дереве, отметил драйверы и порядок. А вот с spi1 засада.
в /sys/class/spi_master/ вполне себе есть spi1, но нет его в /dev
что проверить, что посмотреть?

дерево на данный момент такое:
 

&mmc2 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc2_8bit_pins>;
        vmmc-supply = <&reg_vcc3v3>;
        vqmmc-supply = <&reg_vcc3v3>;
        bus-width = <8>;
        non-removable;
        status = "okay";
};

&spi1 {
        status = "okay";
};

&i2c1 {
        status = "okay";
};


пробовал (на просторах https://linux-sunxi.org/SPIdev) и вот так тоже:
 

&spi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi1_pins>;
        status = "okay";
        spidev {
              compatible = "spidev";
              #address-cells = <1>;
              #size-cells = <0>;
              reg = <0>;
              spi-max-frequency = <10000000>;
        };
};

не появляется в /dev, хоть тресни
 

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


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

1 час назад, toweroff сказал:

не появляется в /dev, хоть тресни

насколько я помню, /dev/spi и не появится, разве что в кривых китайских драйверах, но может появится устройство типа флешки на spi..

для появления /dev/spidev* надо проверить включение опции в ядре - CONFIG_SPI_SPIDEV

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


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

4 минуты назад, Jury093 сказал:

насколько я помню, /dev/spi и не появится, разве что в кривых китайских драйверах, но может появится устройство типа флешки на spi..

для появления /dev/spidev* надо проверить включение опции в ядре - CONFIG_SPI_SPIDEV

в том-то и дело, что нужен голый spidev* (ну в моём случае это spidev1), а не память на интерфейсе
но и ничего левого (spi_nor, spi_nand, ...) в конфигах не замечено

а так-то оно да, включено:

Symbol: SPI_SPIDEV [=y]                                                                                                           │  
  │ Type  : tristate                                                                                                                  │  
  │ Defined at drivers/spi/Kconfig:1135                                                                                               │  
  │   Prompt: User mode SPI device driver support                                                                                     │  
  │   Depends on: SPI [=y] && SPI_MASTER [=y]                                                                                         │  
  │   Location:                                                                                                                       │  
  │     -> Device Drivers                                                                                                             │  
  │       -> SPI support (SPI [=y])                                                                                                   │  
  │ (1)     -> User mode SPI device driver support (SPI_SPIDEV [=y])                                                                  │  

  


 

root@OpenWrt:/# ls /dev
bus           mmcblk1boot1  tty18         tty40         tty63
console       mmcblk1p1     tty19         tty41         tty7
fd            mmcblk1p2     tty2          tty42         tty8
full          mmcblk1p3     tty20         tty43         tty9
gpiochip0     null          tty21         tty44         ttyS0
gpiochip1     ppp           tty22         tty45         ttyS1
hwrng         psaux         tty23         tty46         ttyS2
i2c-1         ptmx          tty24         tty47         ttyS3
input         pts           tty25         tty48         ttyS4
kmsg          random        tty26         tty49         ttyS5
log           shm           tty27         tty5          ttyS6
loop-control  stderr        tty28         tty50         ttyS7
loop0         stdin         tty29         tty51         urandom
loop1         stdout        tty3          tty52         userio
loop2         tty           tty30         tty53         vcs
loop3         tty0          tty31         tty54         vcs1
loop4         tty1          tty32         tty55         vcsa
loop5         tty10         tty33         tty56         vcsa1
loop6         tty11         tty34         tty57         vcsu
loop7         tty12         tty35         tty58         vcsu1
mmcblk0       tty13         tty36         tty59         vhost-net
mmcblk0p1     tty14         tty37         tty6          watchdog
mmcblk0p2     tty15         tty38         tty60         watchdog0
mmcblk1       tty16         tty39         tty61         zero
mmcblk1boot0  tty17         tty4          tty62

вот что в /dev
 

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


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

spidev давно уже нельзя просто так прописать в DT, нужны обходные маневры:

spidev@0 {
	compatible = "rohm,dh2228fv";	/* =spidev Kludge, workaround for
			"buggy DT: spidev listed directly in DT" */
	spi-max-frequency = <25000000>;
	reg = <0>;
};

 

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


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

2 минуты назад, aaarrr сказал:

spidev давно уже нельзя просто так прописать в DT, нужны обходные маневры:

spidev@0 {
	compatible = "rohm,dh2228fv";	/* =spidev Kludge, workaround for
			"buggy DT: spidev listed directly in DT" */
	spi-max-frequency = <25000000>;
	reg = <0>;
};

 

это как subnode?

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


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

29 минут назад, aaarrr сказал:

Да, вместо прямого упоминания.

root@OpenWrt:/# ls /dev
bus           mmcblk0p3     tty17         tty4          tty62
console       mmcblk1       tty18         tty40         tty63
fd            mmcblk1p1     tty19         tty41         tty7
full          mmcblk1p2     tty2          tty42         tty8
gpiochip0     null          tty20         tty43         tty9
gpiochip1     ppp           tty21         tty44         ttyS0
hwrng         psaux         tty22         tty45         ttyS1
i2c-1         ptmx          tty23         tty46         ttyS2
input         pts           tty24         tty47         ttyS3
kmsg          random        tty25         tty48         ttyS4
log           shm           tty26         tty49         ttyS5
loop-control  spidev1.0     tty27         tty5          ttyS6
loop0         stderr        tty28         tty50         ttyS7
loop1         stdin         tty29         tty51         urandom
loop2         stdout        tty3          tty52         userio
loop3         tty           tty30         tty53         vcs
loop4         tty0          tty31         tty54         vcs1
loop5         tty1          tty32         tty55         vcsa
loop6         tty10         tty33         tty56         vcsa1
loop7         tty11         tty34         tty57         vcsu
mmcblk0       tty12         tty35         tty58         vcsu1
mmcblk0boot0  tty13         tty36         tty59         vhost-net
mmcblk0boot1  tty14         tty37         tty6          watchdog
mmcblk0p1     tty15         tty38         tty60         watchdog0
mmcblk0p2     tty16         tty39         tty61         zero

а вот и счастье)
большое спасибо!

36 минут назад, aaarrr сказал:

spidev давно уже нельзя просто так прописать в DT, нужны обходные маневры

понимаю, что в этом вариться нужно постоянно)
но откуда хоть как-то черпать инфу?

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


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

6 minutes ago, toweroff said:

но откуда хоть как-то черпать инфу?

В данном случае достаточно было внимательно прочитать сообщения при загрузке.

dmesg | grep spi

А дальше уже по желанию - гуглить или копать исходники.

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


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

6 минут назад, aaarrr сказал:

В данном случае достаточно было внимательно прочитать сообщения при загрузке.

dmesg | grep spi

А дальше уже по желанию - гуглить или копать исходники.

в том-то и дело, что.. просто ничего

кстати, и сейчас то же самое)

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


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

5 минут назад, aaarrr сказал:

Странно. А ядро какое?

если OpenWRT не врёт, то 6.1.63

root@OpenWrt:/# dmesg | grep spi
root@OpenWrt:/#

 

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


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

обьясните пожалуйста некоторые моменты по device tree на примере  по данному процессору 

пример добавления SPI    как  описано выше взял у китайцев

spi1_pins_a: spi1@0 {
        pins = "PD11", "PD12", "PD13";
        function = "spi1";
        drive-strength = <10>;
    };

/*
    spi1_pins_b: spi1@1 {
        pins = "PD10";
        function = "spi1";
        drive-strength = <10>;
        bias-pull-up;   // only CS should be pulled up
    };
*/

    spi1_pins_c: spi1@2 {
        allwinner,pins = /*"PD10",*/ "PD11", "PD12", "PD13";
        allwinner,function = "gpio_in";
        allwinner,muxsel = <0>;
        drive-strength = <10>;
    };

насколько я понимаю создаем три  варианта конфигурации пинов(вроде шаблонов) spi1_pins_a:spi1@1      spi1_pins_b:spi1@2        spi1_pins_c: spi1@3

При этом все пины в группе  имеют одинаковую конфигурацию. 

 не пойму что такое function = "spi1"; Предполагаю что "spi1" содержит какие то предустановленные настройки?  Если да где их можно посмотреть?

 И второе в чем разница между pins и allwinner,pins

Идем далее 

 

&spi1 {
    clock-frequency = <100000000>;
    pinctrl-0 = <&spi1_pins_a /*&spi1_pins_b*/>;
    pinctrl-1 = <&spi1_pins_c>;
    pinctrl-names = "default", "sleep";
    spi_slave_mode = <0>;
    spi1_cs_number = <1>;
        spi1_cs_bitmap = <1>;
    status = "okay";

    spi_board1@0 {
        device_type = "spi_board1";
        compatible = "rohm,dh2228fv";
        spi-max-frequency = <16000000>;
        reg = <0x0>;
        spi-rx-bus-width = <0x4>;
        spi-tx-bus-width = <0x4>;
        status = "okay";
    };
};

Сюда передаем наши шаблоны  spi1_pins_a     spi1_pins_c     и уже драйвер будет решать какой из двух вариантов использовать?

 

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


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

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

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

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

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

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

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

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

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

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