Repka Pi 4 sc16is752 device tree overlay

После некоторых правок overlay, уже не вижу ошибок в логе dmesg / journalctr -b, но ttySC* файлов так же нету.

Этот кусок не уверен что к целевому spi:
Bash:
[    3.244345] /soc/spi@5011000/sc16is752@0: Fixed dependency cycle(s) with /soc/spi@5011000/sc16is752@0/sc16is752_clk
[    3.261526] spi spi0.0: chipselect 0 already in use
[    3.266424] spi_master spi0: spi_device register error /soc/spi@5011000/spidev@0
[    3.273862] spi_master spi0: Failed to create SPI device for /soc/spi@5011000/spidev@0

Вот что нету ошибок с sc16is752 (но отвалился блютуз):

Bash:
[    8.336128] systemd[1]: Started Journal Service.
[    8.341622] spi0.0: ttySC0 at I/O 0x0 (irq = 187, base_baud = 921600) is a SC16IS752
[    8.351742] serial serial1: tty port ttySC0 registered
[    8.358909] spi0.0: ttySC1 at I/O 0x1 (irq = 187, base_baud = 921600) is a SC16IS752
[    8.359312] serial serial2: tty port ttySC1 registered
[    8.442607] systemd-journald[140]: Received client request to flush runtime journal.
[   13.949197] Bluetooth: hci0: command 0xfc18 tx timeout
[   13.954466] Bluetooth: hci0: BCM: failed to write update baudrate (-110)
[   13.961235] Bluetooth: hci0: Failed to set baudrate
[   15.997184] Bluetooth: hci0: command 0xfc18 tx timeout
[   16.002438] Bluetooth: hci0: BCM: Reset failed (-110)

На осциллографе картинка всё еще плохая - какой-то бредовый сигнал - SCLK почти отсутствует, MISO/MOSI тоже.
Вроде ошибок нету в логе:
Bash:
root@Repka-Pi:~# journalctl -b | grep "spi"
июн 16 09:04:40 Repka-Pi kernel: /soc/spi@5011000/sc16is752@0: Fixed dependency cycle(s) with /soc/spi@5011000/sc16is752@0/sc16is752_clk
июн 16 09:04:40 Repka-Pi kernel: spi spi0.0: chipselect 0 already in use
июн 16 09:04:40 Repka-Pi kernel: spi_master spi0: spi_device register error /soc/spi@5011000/spidev@0
июн 16 09:04:40 Repka-Pi kernel: spi_master spi0: Failed to create SPI device for /soc/spi@5011000/spidev@0
июн 16 09:04:41 Repka-Pi kernel: spi0.0: ttySC0 at I/O 0x0 (irq = 187, base_baud = 921600) is a SC16IS752
июн 16 09:04:41 Repka-Pi kernel: spi0.0: ttySC1 at I/O 0x1 (irq = 187, base_baud = 921600) is a SC16IS752
июн 16 09:04:41 Repka-Pi systemd-modules-load[157]: Inserted module 'sc16is7xx_spi'
июн 16 09:05:09 Repka-Pi /usr/libexec/gdm-x-session[801]: dbus-daemon[801]: Activating service name='org.a11y.atspi.Registry' requested by ':1.1' (uid=122 pid=809 comm="/usr/bin/gnome-shell ")
июн 16 09:05:09 Repka-Pi /usr/libexec/gdm-x-session[801]: dbus-daemon[801]: Successfully activated service 'org.a11y.atspi.Registry'
июн 16 09:05:09 Repka-Pi /usr/libexec/gdm-x-session[846]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.Registry
июн 16 09:05:10 Repka-Pi spice-vdagent[961]: vdagent virtio channel /dev/virtio-ports/com.redhat.spice.0 does not exist, exiting

Текущий overlay:

C-подобный:
/dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun50i-h6";
    fragment@0 {
        target = <&spi1>;
        __overlay__ {
            status = "okay";
        };
    };

    fragment@1 {
        target = <&spi1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";
        
            /*pinctrl-names = "default", "default";
            pinctrl-1 = <&spi1_cs0>; */
            cs-gpios = <&pio 7 3 1>; // было <0>, <&pio 7 3 0>;


            sc16is752: sc16is752@0 {
            status = "okay";
                compatible = "nxp,sc16is752";
                reg = <0>; /* CE0 */
                spi-max-frequency = <4000000>;
                interrupt-parent = <&pio>;
                interrupts = <6 8 8>; /* IRQ_TYPE_EDGE_FALLING */
        interrupt-names = "irq";
                clocks = <&sc16is752_clk>;
        gpio-controller;
        #gpio-cells = <2>;
        #cell-cells = <1>;

                sc16is752_clk: sc16is752_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <14745600>;
                };
            };
        };
    };
};
Странно, что ошибок нету, как и файлов ttySC* в /dev/.

Update. Eсли заменить CS0 на CS1 (cs-gpios = <&pio 7 2 1>;), то результаты точно такие.
Гм. Вот где вы в Repka Pi 4 нашли SPI1? Что бы заработало надо прописывать существующие варианты распиновок, а не гадать, а тем более прописывать то чего нет.
 
Я уже запутался, SPI0 или SPI1 на плате?

На самом деле, не намного лучше прогугливается так)
Запрос может быть и другим например: sc16is752-spi0-overlay.dts суть, что лучше подойдёт тот оверлей который писался под такой же камень. :)
 
Вот ссылка на документацию в репка по SPI протоколам: https://repka-pi.ru/docs/64#spi
Цитата:
"Важно учитывать, что количество одновременно доступных SPI-интерфейсов зависит от модели платы:

  • Repka Pi 3 — доступно 2 SPI-контроллера,
  • Repka Pi 4 — доступен 1 SPI-контроллер, (Добавлено к цитате: а именно SPI0 )
  • Repka Pi 5 — доступно 3 SPI-контроллера. "
И основываясь на даташит Вашего модуля

адаптация распиновки к Repka Pi 4

PINOUT_232_RepkaPi4.jpg
Под данную распиновку и нужно причёсывать код оверлея.
Прописывая пины PH4, PH5, PH6 функции для них прописать лучше каждую отдельно input, input, output (т.е function = <3>; /* alt4 */ непрокатит, так на всякий случай).
 
Гм. Вот где вы в Repka Pi 4 нашли SPI1? Что бы заработало надо прописывать существующие варианты распиновок, а не гадать, а тем более прописывать то чего нет.
Потому что, если прописать SPI0, overlay перестает работать. Ядро не стартует.
Bash:
sc16is752.dtbo loaded successfully
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2611 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
 
Под данную распиновку и нужно причёсывать код оверлея.
Прописывая пины PH4, PH5, PH6 функции для них прописать лучше каждую отдельно input, input, output (т.е function = <3>; /* alt4 */ непрокатит, так на всякий случай).
А тут подробнее можете, пожалуйста? Хотя бы какой-то пример
 
Потому что, если прописать SPI0, overlay перестает работать. Ядро не стартует.
Bash:
sc16is752.dtbo loaded successfully
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2611 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
Если хотите что бы заработало давайте по порядку без хаоса.

1. Ядро не стартует по другой причине. Ошибка же: В дереве устройств не настроен режим сглаживания.
2. Читаем RS485 RS232 HAT Datasheet там указано, что

Product parameters
Serial port expansion chip: SC16IS752
RS485 transceiver: SP3485
RS232 transceiver: SP3232
Communication Interface: SPI
Communication rate: 300~921600 bps
Operating Voltage: 3.3/5V
Operating Voltage: 3.3/5V
Dimension: 65mm × 56.5mm
Via diameter: 3.0mm

Другими словами:

Параметры продукта
Микросхема расширения последовательного порта: SC16IS752
Трансивер RS485: SP3485
Трансивер RS232: SP3232
Интерфейс связи: SPI (подчёркиваю, т.е можно выбрать тот который есть на плате, так как на Repka Pi 4 есть только SPI0, он и должен быть прописан в дереве устройств). По другому работать уже не будет.
Скорость связи: 300~921600 бит/с
Рабочее напряжение: 3,3/5 В
Размеры: 65 мм × 56,5 мм
Диаметр переходного отверстия: 3,0 мм

3. Там же смотрим Interface Description (Описание интерфейса), и пины они кстати на модуле запараллелены на боковые выводы. Т.е модуль делая под Repka Pi 4 оверлей в 40 пиновой кнезда в 40 пин гребёнку не вставлять, верхним монтажём.

4. Подключаем плату (на плате как раз 40 пин гребёнкой не пользуемся) через боковую к Repka Pi 4 на SPI0 (пины для Repka Pi4 указывались ответом выше) проводами

5. После правильного аппаратного подключения можно начинать тестить оверлей с указанными данными протокола SPI0 Repka Pi 4
+ прописывать оверлей в конфиге думается придётся несколько иначе чем у Вас.

Если хотите запустить начинайте с малого но все ходы должны быть правильными, так что вот пока 5 обязательных до причёсывания кода оверлея.
так как готовых примеров под репку пока нет.
 
Последнее редактирование:
Вот небольшой тестовый набросок оверлея с какого я бы начал (хотя тоже есть сомнения по ряду вопросов) озвучу ниже, но нет возможности проверить так сказать по факту.

Код наложения: repka_pi4-sc16is752-spi0-test_0000.dts
Код:
   /dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun50i-h6";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";
        };
    };

        fragment@1 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";

            sc16is752: sc16is752@0 {
                compatible = "nxp,sc16is752";
                reg = <0>; /* SPI chip select 0 */
                spi-max-frequency = <4000000>;
               
                /* Настройки прерывания для пина PL3 */
                interrupt-parent = <&r_pio>;
                interrupts = <0 3 2>; /* 0 = Банк L, 3 = Номер пина PL3, 2 = IRQ_TYPE_EDGE_FALLING */
               
                clocks = <&sc16is752_clk>;
               
                sc16is752_clk: sc16is752_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <14745600>; /* Заменить на частоту установленного кварца на модуле*/
                };
            };
        };
    };

};

Его в таком виде уже следуем проверять и на 2 (втором) варианте распиновке да и на 3 (третьем) всё дело в пине PL3 скорее UART-RX то нужен.

В конфиге лучше пока лишнего ничего не писать кроме как прописать оверлей просто формата: repka_pi4-sc16is752-spi0-test_0000
После внесений изменений
соответственно _0001, 0002 и так далее и обязательно РЕБУТИТЬ систему после новой версии для теста оверлея и правки конфига иначе может не сработать а так же будет работать старая версия. РЕБУТ обязателен.

И обязательно каждую версию проверять и на 2 и на 3 варианте распиновке (для начала хотя бы что-бы понять какая из них ОНО) :)

По 3 и 4. Пункту ай эм сори в прошлом выше посте я немного неправильно сформулировал (но подправил после) повторюсь т.е на боковые выводы модуля провода можно накидывать главное что бы на Repka Pi 4 они приходили на те которые обозначены для Repka Pi4 и SPI0.
На самом же модуле 40 пиновкой пользоватся не стоит, Даже больше и в Repka Pi 4 не вставлять так как там боковая панель с 40 пин (на модуле) запараллелена. Что бы небыло КЗ модуль отдельно Репка отдельно верхним монтажом. ЭТО ВАЖНО. Модуль делался под модели отличные от РЕПКИ!!! Вот схема: https://www.waveshare.net/w/upload/f/f6/RS485_RS232_HAT_SchDoc.pdf
 
Последнее редактирование:
А тут подробнее можете, пожалуйста? Хотя бы какой-то пример
Ягодно-Фруктовая тема:

Код:
fragment@0 {
        target = <&gpio>;
        __overlay__ {
            spi1_pins: spi1_pins {
                brcm,pins = <19 20 21>;
                brcm,function = <3>; /* alt4 */
            };

Может и оверлей для Repka не заводится, потому что и нет многих функций как в ягодной теме.

Как проверенно (тоже первый раз писал под экран) завелось в нашей

Овощная тема:

Код:
fragment@0 {                            
    target = <&pio>;
    __overlay__ {
      ili9341_pins: ili9341_pins {
        pins = "PA9", "PA10"; /*RESET, DC_RS*/
        function = "gpio_out", "gpio_out" ;
      };

Т.е если вдруг при переделки оверлея всё же что бы завести придётся прописывать и пины PH4, PH5, PH6

то лучше уж так:

Код:
pins = "PH4", "PH5", "PH6" ; /*SCLK, MOSI, MISO*/
function = "gpio_in", "gpio_in", "gpio_out" ;

Там то целая экосистема уже столько понаписано вы например знаете как работает функция <3> и вообще поддерживает её репка, есть ли она в ней, К тому же порой слепое копирование не всегда приводит к нужному результату, а вот понимание строчек кода пусть и не сразу дают больший (рабочий) эффект, а оптимизировать и расширить функции можно и позже. Чтобы и настройки менять через консоль и остальное.
 
Последнее редактирование:
Вот где вы в Repka Pi 4 нашли SPI1
У Репки 4 spi0 --- это spi1, если верить https://gitflic.ru/project/npo_rbs/...sun50i-h6-repka-pi4-optimal.dts&branch=master, где написано на строке 26:
C:
    aliases {
        ethernet0 = &emac;
        serial0 = &uart0;
        serial1 = &uart1;
        serial2 = &r_uart;

        spi0 = &spi1;

Причём я не совсем понимаю как работает 345 строка:
Код:
/delete-node/ &spi0;

Она удаляет spi0, но какой? Который определён в дереве для Н6 или который опеделён как алиас (или вовсе оба)?
 
Кстати, а может выбрать вариант распиновки №1 без spi, а уже в своём оверлее включить узел с spi1?

Код:
fragment@0 {
        target = <&spi1>;
        __overlay__ {
            status = "okay";
        };
    };
 
У Репки 4 spi0 --- это spi1, если верить https://gitflic.ru/project/npo_rbs/...sun50i-h6-repka-pi4-optimal.dts&branch=master, где написано на строке 26:
C:
    aliases {
        ethernet0 = &emac;
        serial0 = &uart0;
        serial1 = &uart1;
        serial2 = &r_uart;

        spi0 = &spi1;

Причём я не совсем понимаю как работает 345 строка:
Код:
/delete-node/ &spi0;

Она удаляет spi0, но какой? Который определён в дереве для Н6 или который опеделён как алиас (или вовсе оба)?
Вы не правильно читаете.

1. SPI протоколы начинается с SPI0 далее SPI1, SPI2 так же нумерация должна быть и на гребёнке.
2. Подразумеваю, что здесь тот случай когда на гребёнки был предусмотрен всего один протокол SPI значить SPI0
А раскидывать дорожки на плате удобней было от SPI1 (который на камне)
3. Вот по этому в коде Дерева Устройств даются прозвища (aliases) spi0 и равняется это & (ссылка) на spi1
4. /delete-node/ &spi0 и здесь то удалена ссылка на spi0.
5. Всё одно приходим к тому, как и должно быть, с гребёнки Repka Pi 4 задействуем ИГОЛКИ (ПИНЫ) протокола SPI0
его же применяем и в ОВЕРЛЕЕСТРОЕНИИ
6.
Как работает ШЛЯПА на модуле sc16is752 особо не вникал, но то что она писалась под ягодно-фруктовый продукт и при прокладке дорожек (на ШЛЯПЕ) был выбран SPI1 ( ягодно-фруктового устройства). Задача от камня ШЛЯПЫ ДО камня РЕПКИ 4 правильно подобрать
и протянуть проводки (СОЕДЕНИТЬ АППАРАТНО) и с учётом уже прописанных веток дерева устройств РЕПКИ 4 ну конечно и драйверов данной ШЛЯПЫ прописать Оверлей (подтянуть всё это дело ПРОГРАММНО)
7. Здесь хотелось бы заострить внимание на:

Код:
/* Настройки прерывания для пина PL3 */
                interrupt-parent = <&r_pio>;
                interrupts = <0 3 2>; /* 0 = Банк L, 3 = Номер пина PL3, 2 = IRQ_TYPE_EDGE_FALLING */
вот из за этого скорее всего и нужна будет распиновка №3 на Repka 4 (таковой не имею) впрочем повторюсь как и данного модуля (ШЛЯПЫ), тестите пробуйте.
 
Причём я не совсем понимаю как работает 345 строка:
Код:
/delete-node/ &spi0;

Она удаляет spi0, но какой? Который определён в дереве для Н6 или который опеделён как алиас (или вовсе оба)?

Вопрос конечно интересный :D но по логике вещей должна работать так что бы оверлей писался под spi0, это можно проверить допустим если взять оверлей (заведомо рабочий) от другого устройства (ШЛЯПЫ)

Совет дня: просмотрите те оверлеи которые есть в Repka Pi 4 есть ли какие которые прописаны через SPI и как?
 
Так, чуть потерял суть в треде.

Пока делал всё (вроде) как указывал выше @Rzyx_Ledge . Не понял куда в оверлей вставить инициализацию портов SPI0. Схемотехника точно подключена как указано (не через 40-пиновый разъем). Для каждой проверки работы оверлея делал ребут. Менял варианты 2 и 3 распиновки через repka-config.

Можно ли как-то расширить логирование или прикрутить отладчик во время проверки device tree и overlay?

Плюс уже надоело вытаскивать sd-карту для правки repkaEnv.txt. Можно ли как-то через u-boot попросить не загружать определенный оверлей?

Можно ли компилировать overlay для репки (или любого другого arm64) с х86_64 системы? Или нужен кросскомпилятор? Всегда компилировал на самой плате, но уже тоже надоело.

Пока такие 2 оверлея делал:

C-подобный:
root@Repka-Pi:~# cat repka_pi4-sc16is752-spi0-test_0000.dts
 /dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun50i-h6";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";
        };
    };

        fragment@1 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";

            sc16is752: sc16is752@0 {
                compatible = "nxp,sc16is752";
                reg = <0>; /* SPI chip select 0 */
                spi-max-frequency = <4000000>;
             
                /* Настройки прерывания для пина PL3 */
                interrupt-parent = <&r_pio>;
                interrupts = <0 3 2>; /* 0 = Банк L, 3 = Номер пина PL3, 2 = IRQ_TYPE_EDGE_FALLING */
             
                clocks = <&sc16is752_clk>;
             
                sc16is752_clk: sc16is752_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <14745600>; /* Заменить на частоту установленного кварца на модуле*/
                };
            };
        };
    };
};

root@Repka-Pi:~# cat repka_pi4-sc16is752-spi0-test_0001.dts
 /dts-v1/;
/plugin/;

/ {
    compatible = "allwinner,sun50i-h6";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";
        pins = "PH4", "PH5", "PH6" ; /*SCLK, MOSI, MISO*/
            function = "gpio_in", "gpio_in", "gpio_out" ;
        };
    };

        fragment@1 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";

            sc16is752: sc16is752@0 {
                compatible = "nxp,sc16is752";
                reg = <0>; /* SPI chip select 0 */
                spi-max-frequency = <4000000>;
             
                /* Настройки прерывания для пина PL3 */
                interrupt-parent = <&r_pio>;
                interrupts = <0 3 2>; /* 0 = Банк L, 3 = Номер пина PL3, 2 = IRQ_TYPE_EDGE_FALLING */
             
                clocks = <&sc16is752_clk>;
             
                sc16is752_clk: sc16is752_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <14745600>; /* Заменить на частоту установленного кварца на модуле*/
                };
            };
        };
    };

};

Но результат всё тот же во всех случаях:
sc16is752.dtbo loaded successfully
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND

Дальнейшая разработка, если и будет под репку, то уже через 2 UART. Раз у меня не хватает навыков и терпения. Дальнейшее обсуждение в этом треде будет чисто ради интереса.
 
Последнее редактирование:
Кстати, а может выбрать вариант распиновки №1 без spi, а уже в своём оверлее включить узел с spi1?

Код:
fragment@0 {
        target = <&spi1>;
        __overlay__ {
            status = "okay";
        };
    };
Будет это:
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2611 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
 
Будет это:
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2611 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
Чуть подредактировал в некоторых местах и добавил новые строчки кода, должно зацепить
После оверлея в конфиге добавить переменную repka_pi4-sc16is752-spi0-test_0001, int_pin=355
spidev@0{ /*добавлено пару строк*/
status = "disabled";
};


<&gpio>;
interrupts = <355 0x2>; /* PL3, 2 = IRQ_TYPE_EDGE_FALLING */ /*немного скорректировано */

repka_pi4-sc16is752-spi0-test_0001.dts


Код:
/* После оверлея в конфиге добавить переменную  repka_pi4-sc16is752-spi0-test_0001, int_pin=355 */

  /dts-v1/;
/plugin/;

/ {
    compatible = "arbs,repka-pi4", "allwinner,sun50i-h6";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
               status = "okay";
               spidev@0{                           /*добавлено пару строк*/
                     status = "disabled";
            };
        };
    };

        fragment@1 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";

            sc16is752: sc16is752@0 {
                compatible = "nxp,sc16is752";
                reg = <0>; /* SPI chip select 0 */
                spi-max-frequency = <4000000>;
            
                /* Настройки прерывания для пина PL3 */
                interrupt-parent = <&gpio>;
                interrupts = <355 0x2>; /* PL3, 2 = IRQ_TYPE_EDGE_FALLING */ /*немного скорректировано */
            
                clocks = <&sc16is752_clk>;
            
                sc16is752_clk: sc16is752_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <14745600>; /* Заменить на частоту установленного кварца на модуле*/
                };
            };
        };
    };

};
 
Будет это:
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2611 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
Вот ещё адаптировал, всё под туже распиновку которая была выше kernel_mptcp от фруктово-ягодных, посмотрите возможно зайдёт.

sc16is752-spi0-repkapi4.dts

Код:
/dts-v1/;
/plugin/;

/ {
    compatible = "rbs,repka-pi4", "allwinner,sun50i-h6";

    fragment@0 {
        target = <&gpio>;
        __overlay__ {
            spi0_pins: spi0_pins {
                rbs,pins = <230 229 21>; /* miso mosi sclk */  /* PH6 PH5 PH4 */
                rbs,function = <1 0 0>; /* output input input */  /* - новый вариант прописано без функции, можно протестить по очереди оба */
                /* rbs,function = <3>; /* alt4 */  - старый вариант возможно и будет работать */
            };

            spi0_cs_pins: spi0_cs_pins {
                rbs,pins = <227>;   /* CS0 */ /* PH3 */
                rbs,function = <1>; /* output */
            };
        };
    };

    fragment@1 {
        target = <&spi0>;
        frag1: __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            pinctrl-names = "default";
            pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
            cs-gpios = <&gpio 227 1>;  /* CS0 */ /* PH3 */
            status = "okay";

            sc16is752: sc16is752@0 {
                compatible = "nxp,sc16is752";
                reg = <0>; /* CE0 */
                clocks = <&sc16is752_clk>;
                interrupt-parent = <&gpio>;
                interrupts = <355 2>; /* IRQ_TYPE_EDGE_FALLING */  /* PL3 */
                #gpio-controller;
                #gpio-cells = <2>;
                spi-max-frequency = <4000000>;

                sc16is752_clk: sc16is752_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0>;
                    clock-frequency = <14745600>;
                };
            };
        };
    };

    fragment@2 {
        target = <&aux>;
        __overlay__ {
            status = "okay";
        };
    };

    __overrides__ {
      int_pin = <&sc16is752>,"interrupts:0";
    };
};

Собственно незабываем и про * PL3 * проверяем как на 1.2 и 3 распиновках так и прописывая или нет int_pin=355 в конфиге.
 
Будет это:
failed on fdt_overlay_apply(): FDT_ERR_NOTFOUND
26058760 bytes read in 2611 ms (9.5 MiB/s)
ERROR: Did not find a cmdline Flattened Device Tree
А ещё лучше подключая распиновку с SPI0 посмотреть в оверлее spi0.dtbo что там прописано какие пины и как?
Код:
Для Repka Pi 4:
  src-pi4
   ├── overlays (директория с оверлеями для Repka Pi 4)
   │ ├── i2c1.dtbo
   │ ├── i2c1-fast-mode.dtbo
   │ ├── i2c2.dtbo
   │ ├── i2c2-fast-mode.dtbo
   │ ├── i2c3.dtbo
   │ ├── i2c3-fast-mode.dtbo
   │ ├── i2s.dtbo
   │ ├── i2s_pcm5102.dtbo
   │ ├── i2s_pcm5122.dtbo
   │ ├── spi0.dtbo
   │ ├── s_uart.dtbo
   │ ├── uart3.dtbo
   │ └── w1_gpio.dtbo
   ├── repka-pi.dtb (основное дерево устройств для Repka Pi 4)
   └── spl
      ├── u-boot-sunxi-with-spl.bin (загрузчик с включенным логированием в UART0)
      └── u-boot-sunxi-with-spl-silent.bin (загрузчик с тихим режимом)

Более понятней станет мне кажется в какую сторону двигать. Всё что выше по подобию фруктово-ягодной темы было заточено, но что-бы точно запилить на Repka надо уже идти по ссылкам овощной темы.