toweroff 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба доброго времени! мало проблем было с 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 = <®_vcc3v3>; vqmmc-supply = <®_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, хоть тресни Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 1 час назад, toweroff сказал: не появляется в /dev, хоть тресни насколько я помню, /dev/spi и не появится, разве что в кривых китайских драйверах, но может появится устройство типа флешки на spi.. для появления /dev/spidev* надо проверить включение опции в ядре - CONFIG_SPI_SPIDEV Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба spidev давно уже нельзя просто так прописать в DT, нужны обходные маневры: spidev@0 { compatible = "rohm,dh2228fv"; /* =spidev Kludge, workaround for "buggy DT: spidev listed directly in DT" */ spi-max-frequency = <25000000>; reg = <0>; }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба Да, вместо прямого упоминания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 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, нужны обходные маневры понимаю, что в этом вариться нужно постоянно) но откуда хоть как-то черпать инфу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 6 minutes ago, toweroff said: но откуда хоть как-то черпать инфу? В данном случае достаточно было внимательно прочитать сообщения при загрузке. dmesg | grep spi А дальше уже по желанию - гуглить или копать исходники. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 6 минут назад, aaarrr сказал: В данном случае достаточно было внимательно прочитать сообщения при загрузке. dmesg | grep spi А дальше уже по желанию - гуглить или копать исходники. в том-то и дело, что.. просто ничего кстати, и сейчас то же самое) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба Странно. А ядро какое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба 5 минут назад, aaarrr сказал: Странно. А ядро какое? если OpenWRT не врёт, то 6.1.63 root@OpenWrt:/# dmesg | grep spi root@OpenWrt:/# Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 декабря, 2023 Опубликовано 5 декабря, 2023 · Жалоба Вроде на месте сообщение: https://elixir.bootlin.com/linux/v6.1.63/source/drivers/spi/spidev.c#L716 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spirit_1 5 14 февраля Опубликовано 14 февраля · Жалоба обьясните пожалуйста некоторые моменты по 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 и уже драйвер будет решать какой из двух вариантов использовать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться