toweroff 1 31 марта Опубликовано 31 марта · Жалоба нашёл вот так: Цитата So if for example the controller has 2 CS lines, and the cs-gpios property looks like this: cs-gpios = <&gpio1 0 0> <0> <&gpio1 1 0> <&gpio1 2 0>; Then it should be configured so that num_chipselect = 4 with the following mapping: cs0 : &gpio1 0 0 cs1 : native cs2 : &gpio1 1 0 cs3 : &gpio1 2 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 31 марта Опубликовано 31 марта · Жалоба ну вот нихрена не понял, где тут две CS линии ну и чуть выше по документу прибило совсем: Цитата - cs-gpios - (optional) gpios chip select. No other properties are required in the SPI bus node. It is assumed that a driver for an SPI bus device will understand that it is an SPI bus. However, the binding does not attempt to define the specific method for assigning chip select numbers. Since SPI chip select configuration is flexible and non-standardized, it is left out of this binding with the assumption that board specific platform code will be used to manage chip selects. Individual drivers can define additional properties to support describing the chip select layout. 4 минуты назад, toweroff сказал: ну вот нихрена не понял, где тут две CS линии точнее, тут понятно расположение значений для cs-gpio. Откуда "2 CS lines"? Где-то в драйвере sunxi видел, что cs >=4 вообще не будет рассматриваться завтра буду пробовать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 31 марта Опубликовано 31 марта · Жалоба 2 hours ago, toweroff said: Откуда "2 CS lines"? Одна используется по назначению, вторая для покрытия cs-gpio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба Пока вот такой результат (прототип на T113 до меня пока добирается, тестирую эту часть на NanopiNeoCore, там CS0 нативный, CS1 через GPIO): &spi1 { status = "okay"; cs-gpios = <0>, <&pio 11 11 GPIO_ACTIVE_LOW>; spidev@0 { compatible = "rohm,dh2228fv"; /* =spidev Kludge, workaround for "buggy DT: spidev listed directly in DT" */ spi-max-frequency = <5000000>; reg = <0>; }; spidev@1 { compatible = "rohm,dh2228fv"; /* =spidev Kludge, workaround for "buggy DT: spidev listed directly in DT" */ spi-max-frequency = <5000000>; reg = <0>; }; }; root@OpenWrt:~# dmesg | grep spi [ 0.317015] sun6i-spi 1c69000.spi: cannot register SPI master [ 0.341211] sun6i-spi 1c69000.spi: cannot register SPI master [ 0.344645] sun6i-spi 1c69000.spi: cannot register SPI master [ 0.361196] sun6i-spi 1c69000.spi: cannot register SPI master [ 0.362052] sun6i-spi 1c69000.spi: cannot register SPI master [ 0.404093] sun6i-spi 1c69000.spi: cannot register SPI master [ 0.415344] sun6i-spi 1c69000.spi: cannot register SPI master [ 1.413215] sun6i-spi 1c69000.spi: cannot register SPI master [ 1.423505] sun6i-spi 1c69000.spi: cannot register SPI master [ 1.468072] sun6i-spi 1c69000.spi: cannot register SPI master [ 1.474606] sun6i-spi 1c69000.spi: cannot register SPI master [ 1.520434] sun6i-spi 1c69000.spi: cannot register SPI master [ 1.527071] sun6i-spi 1c69000.spi: cannot register SPI master [ 5.636167] sun6i-spi 1c69000.spi: cannot register SPI master [ 20.326411] sun6i-spi 1c69000.spi: cannot register SPI master [ 20.332482] platform 1c69000.spi: deferred probe pending [ 26.551622] sun6i-spi 1c69000.spi: cannot register SPI master Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 1 апреля Опубликовано 1 апреля · Жалоба 24 minutes ago, toweroff said: <&pio 11 11 GPIO_ACTIVE_LOW>; 11 - эт какая буква получается? 25 minutes ago, toweroff said: spidev@1 { compatible = "rohm,dh2228fv"; /* =spidev Kludge, workaround for "buggy DT: spidev listed directly in DT" */ spi-max-frequency = <5000000>; reg = <0>; }; reg = <1>; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба 3 минуты назад, aaarrr сказал: 11 - эт какая буква получается? PL11 по идее.. 8 минут назад, aaarrr сказал: reg = <1>; да, точно. Поправил, но результат тот же Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 1 апреля Опубликовано 1 апреля · Жалоба 6 minutes ago, toweroff said: PL11 по идее.. PL11 - это <&r_pio 0 11 GPIO_ACTIVE_LOW> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба в sunxi-h3-h5.dtsi вот такое описание: r_pio: pinctrl@1f02c00 { compatible = "allwinner,sun8i-h3-r-pinctrl"; reg = <0x01f02c00 0x400>; interrupt-parent = <&r_intc>; interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>, <&rtc CLK_OSC32K>; clock-names = "apb", "hosc", "losc"; gpio-controller; #gpio-cells = <3>; interrupt-controller; #interrupt-cells = <3>; r_ir_rx_pin: r-ir-rx-pin { pins = "PL11"; function = "s_cir_rx"; }; r_i2c_pins: r-i2c-pins { pins = "PL0", "PL1"; function = "s_i2c"; }; r_pwm_pin: r-pwm-pin { pins = "PL10"; function = "s_pwm"; }; r_uart_pins: r-uart-pins { pins = "PL2", "PL3"; function = "s_uart"; }; }; т.е. у порта PL вообще отдельное описание и пин уже как бы занят Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 1 апреля Опубликовано 1 апреля · Жалоба 3 minutes ago, toweroff said: пин уже как бы занят Не занят, если его никто не использует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба Не хочет spidev1.1 поднимать( root@OpenWrt:~# dmesg | grep spi [ 0.336207] sun6i-spi 1c69000.spi: chipselect 0 already in use [ 0.354936] spi_master spi1: spi_device register error /soc/spi@1c69000/spidev@1 [ 0.354974] spi_master spi1: Failed to create SPI device for /soc/spi@1c69000/spidev@1 root@OpenWrt:~# ls /dev/spi* /dev/spidev1.0 root@OpenWrt:~# извиняюсь... почему-то опять всплыл reg = <0>; сейчас пересоберу, проверю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба Заработало. aaarrr, большое спасибо за помощь! это выборка с софтовым CS1 это с аппаратным CS0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 39 1 апреля Опубликовано 1 апреля · Жалоба Как то не очень красиво. На первом графике в начале активны оба CS. Возможно придется добавлять костыль в код, чтобы избежать этого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба 2 часа назад, Zig сказал: Как то не очень красиво. На первом графике в начале активны оба CS. Возможно придется добавлять костыль в код, чтобы избежать этого. не очень, да. И, как оказалось, вносит свой раздрай при обмене(( пока ищу, можно ли корректировать время активирования CS до начала такта и время деактивации после Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 1 апреля Опубликовано 1 апреля · Жалоба 11 minutes ago, toweroff said: И, как оказалось, вносит свой раздрай при обмене(( Что не так? 11 minutes ago, toweroff said: пока ищу, можно ли корректировать время активирования CS до начала такта и время деактивации после Насколько я помню, нет. Оно и так составляет десятки микросекунд в силу общей убогости подсистемы SPI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 1 апреля Опубликовано 1 апреля · Жалоба 3 минуты назад, aaarrr сказал: Что не так? пока выражается в некорректной работе. При отключении в настройках устройства, висящего на cs-gpio, устройство на аппаратном CS начинает работать корректно. чуть позже залезу анализатором, попробую посмотреть предмет конфликта Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться