LINUX.ORG.RU

Избранные сообщения alexnname

Совместная работа Orange Pi и дисплея 3.5" KeDei

Форум — Linux-hardware

Доброго времени суток, форумчане. Приобрёл на AliExpress LCD дисплей 3.5" KeDei (модель KD0350AV02. Фото - https://auctions.afimg.jp/j1107751807/ya/image/j1107751807.1.jpg). Данная модель имеет на борту схему RTD2660H, отвечающую за вывод по HDMI и микросхему XPT2046, отвечающую за работу тачскрина и взаимодействие по SPI с одноплатным компьютером. Использую одноплатный компьютер Orange Pi PC (allwinner,sun8i-h3). Решил не заморачиваться со сборкой системы и установил готовую Armbian 24.11.0 на базе ядра Linux 6.6.54-current-sunxi (на 6 ноября это была последняя доступная версия Armbian для данного SBC). Почитав форумы в сети, я заметил, что с этой схемой используют драйвер ADS7846, который в данном ядре уже был встроен. Суть в том, что HDMI подрубился «из коробки», а тачскрин ни в какую не хочет, какой бы Device Tree и конфиг я не использовал. Device Tree для данной микросхемы пришлось добавить в overlay, потому что его изначально не было. Система подкинула драйвер, но при тестировании касания тачскрина не дают никакого результата. В сети есть гайды по похожим дисплеям для систем и ядер более старой версии, есть также Device Tree и конфиги для них, но они разнятся с учётом версий. Возможно я что-то не дописал или упустил из виду. Поэтому прилагаю ниже части лога загрузчика, ядра, конфиг и Device Tree и прошу что-то подсказать в данном направлении знающих людей.

Конфиг armbianEnv.txt:

verbosity=1
bootlogo=true
console=serial
disp_mode=640x480p60
overlay_prefix=sun8i-h3
rootfstype=ext4
extraargs=drm_kms_helper.edid_firmware=HDMI-A-1:edid/640x480.bin video=HDMI-A-1:640x480-24@60
overlays=spi-add-cs1 spi-jedec-nor spi-spidev usbhost2 usbhost3 w1-gpio ads7846
param_spidev_spi_bus=0
param_spidev_spi_cs=1
video-mode=sunxi:1024x600,monitor=hdmi,hpd=1,edid=1
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

Device Tree для ADS7846:

/dts-v1/;
/plugin/;

/ {
        compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";

        fragment@0 {
                target = <&pio>;
                __overlay__ {
                        ads7846_pins: ads7846_pins {
                                pins= "PA2";
                                function = "irq";
                        };
                };
        };

        fragment@1 {
                target = <&spi0>;
                __overlay__ {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "okay";
                        ads7846@0 {
                                compatible = "ti,ads7846";
                                reg = <0x1>; /* Chip Select 1 */
                                status = "okay";
                                pinctrl-names = "default";
                                pinctrl-0 = <&ads7846_pins>;
                                spi-max-frequency = <2000000>;
                                interrupt-parent = <&pio>;
                                interrupts = <0 2 2>; /* PA2 IRQ_TYPE_EDGE_FALLING */
                                pendown-gpio = <&pio 0 2 0>; /* PA2 */

                                /* driver defaults, optional */
                                ti,x-min = /bits/ 16 <0>;
                                ti,y-min = /bits/ 16 <0>;
                                ti,x-max = /bits/ 16 <0x0FFF>;
                                ti,y-max = /bits/ 16 <0x0FFF>;
                                ti,pressure-min = /bits/ 16 <0>;
                                ti,pressure-max = /bits/ 16 <0xFFFF>;
                                ti,x-plate-ohms = /bits/ 16 <400>;
                        };
                };
        };

        fragment@2 {
                target = <&spi0>;
                __overlay__ {
                        status = "disabled";
                };
        };
};

Вывод загрузчика о том, что файл дерева был подхвачен:

Found mainline kernel configuration
35117 bytes read in 12 ms (2.8 MiB/s)
Working FDT set to 43000000
1177 bytes read in 14 ms (82 KiB/s)
Applying kernel provided DT overlay sun8i-h3-spi-add-cs1.dtbo
804 bytes read in 15 ms (51.8 KiB/s)
Applying kernel provided DT overlay sun8i-h3-spi-jedec-nor.dtbo
804 bytes read in 14 ms (55.7 KiB/s)
Applying kernel provided DT overlay sun8i-h3-spi-spidev.dtbo
504 bytes read in 14 ms (35.2 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost2.dtbo
504 bytes read in 14 ms (35.2 KiB/s)
Applying kernel provided DT overlay sun8i-h3-usbhost3.dtbo
777 bytes read in 14 ms (53.7 KiB/s)
Applying kernel provided DT overlay sun8i-h3-w1-gpio.dtbo
1378 bytes read in 16 ms (84 KiB/s)
Applying kernel provided DT overlay sun8i-h3-ads7846.dtbo
4185 bytes read in 15 ms (272.5 KiB/s)
Applying kernel provided DT fixup script (sun8i-h3-fixup.scr)
## Executing script at 45000000
Kernel image @ 0x42000000 [ 0x000000 - 0x893d88 ]

lsmod | grep -iP ‘(spi|ads)’:

ads7846                20480  0

dmesg | grep -iP ‘(spi|ads)’:

[   62.843560] ads7846@0 enforce active low on GPIO handle
[   62.844389] sun6i-spi 1c68000.spi: chipselect 1 already in use
[   62.844409] spi_master spi0: spi_device register error /soc/spi@1c68000/spidev@0
[   62.844439] spi_master spi0: Failed to create SPI device for /soc/spi@1c68000/spidev@0
[   73.221749] ads7846 spi0.1: supply vcc not found, using dummy regulator
[   73.226083] ads7846 spi0.1: touchscreen, irq 43
[   73.236311] input: ADS7846 Touchscreen as /devices/platform/soc/1c68000.spi/spi_master/spi0/spi0.1/input/input4

evtest не выводит строки, когда я взаимодействую с дисплеем. Соответственно система ругается, что не удалось создать устройство spidev, поскольку уже занят данный адрес. В других версиях это исправляли в Device Tree, но я не особо силён в Device Tree и его параметрах, поэтому прошу помощи.

 , , ,

alexnname
()