LINUX.ORG.RU

WCH.CN CH355 PCI Quad Serial Port Controller, поддержка в ядре.

 , , , ,


0

1

При попытке блокирующей записи в порт, этот системный вызов виснет, записи не происходит.

uname -a Linux comp 4.14.15 #4 SMP Fri Jan 26 18:15:36 +04 2018 x86_64 x86_64 x86_64 GNU/Linux

lspci -vv https://pastebin.com/8LCacVqt

setserial -g /dev/ttyS* https://pastebin.com/grdfuFPt

dmesg https://pastebin.com/C4bzW4vx

Кроме того при попытке записи в журнале появляются дополнительные записи: [ 320.942897] irq 18: nobody cared (try booting with the «irqpoll» option) [ 320.942899] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.14.15 #4 [ 320.942900] Hardware name: System manufacturer System Product Name/P8Z77-V LX, BIOS 0801 07/17/2012 [ 320.942901] Call Trace: [ 320.942903] <IRQ> [ 320.942908] dump_stack+0x46/0x59 [ 320.942912] __report_bad_irq+0x2b/0xb0 [ 320.942914] note_interrupt+0x230/0x280 [ 320.942916] handle_irq_event_percpu+0x3c/0x50 [ 320.942917] handle_irq_event+0x22/0x40 [ 320.942919] handle_fasteoi_irq+0x66/0x110 [ 320.942922] handle_irq+0xa0/0x110 [ 320.942925] do_IRQ+0x3c/0xc0 [ 320.942927] common_interrupt+0x95/0x95 [ 320.942928] </IRQ> [ 320.942931] RIP: 0010:cpuidle_enter_state+0x95/0x2c0 [ 320.942932] RSP: 0018:ffff97b180ccbee0 EFLAGS: 00200212 ORIG_RAX: ffffffffffffff2e [ 320.942934] RAX: ffff8dd92fba08c0 RBX: 000000000000074a RCX: 000000000000001f [ 320.942934] RDX: 0000004ab9afe896 RSI: fffffffb1027e963 RDI: 0000000000000000 [ 320.942935] RBP: ffff8dd9254c2a00 R08: 00000000ffffffff R09: 0000000000000008 [ 320.942936] R10: ffff97b180ccbec8 R11: 0000000000000009 R12: 0000000000000001 [ 320.942936] R13: ffffffff82ca2d18 R14: 0000000000000000 R15: 0000004ab9afe14c [ 320.942939] do_idle+0x161/0x1a0 [ 320.942940] cpu_startup_entry+0x14/0x20 [ 320.942942] secondary_startup_64+0xa5/0xb0 [ 320.942943] handlers: [ 320.942945] [<ffffffff8205f880>] i801_isr [ 320.942946] Disabling IRQ #18

Подскажите в какую сторону копать, почему возникает прерывание по SMBUS irq 18 при записи в порт, к которому относится irq 5, если верить lspci.

Вывод strace echo 123 > /dev/ttyS4 https://pastebin.com/WjfBQ3yu

WCH.CN это малоизвестный китайский почти-noname? Есть ли возможность связаться с подвалом, в котором его сделали и сообщить баг репорт?

Когда карточка редкая, на редком чипсете, да еще на Linux, бывает что приходится связываться с производителем. Мне это не раз помогало, тебе тоже советую. Тупо драйвер не отлажен может быть.

I-Love-Microsoft ★★★★★
()

У меня есть какой-то код для CH35X (драйвер и тестовая программа), если интересно, могу скинуть.

CYB3R ★★★★★
()

Поддержка есть в ядре:

https://elixir.free-electrons.com/linux/v4.15/source/drivers/tty/serial/8250/...

Собственно драйвер от производителя работал, но был рассчитан на ядро до 3 версии включительно. При минимальных правках оригинального драйвера (макросы препроцессора, т.о. что компилировался код для 3 версии) и попытке запуска на 4 версии ядра, того что раньше работало на 3 при блокирующей записи ничего не висло, но терялась часть записываемой посылки (записывалось 2-3 байта от 5-6).

Вот драйвера от производителя, вместе с тестовой программой:

http://www.wch.cn/download/CH341SER_LINUX_ZIP.html

Васян разместил код оригинального драйвера:

https://github.com/wd5gnr/WCH4SDriver

Я думаю проблемы в прокладке между драйверами и железом, т.е. во мне - я не так что-то настраиваю. При сборке ядра в make menuconfig есть куча опций касательно

Device Drivers ---> Character devices ---> Serial drivers --->

я пробовал различные варианты, но не достиг успеха, в том числе и в том, чтобы заставить эту плату работать.

mosolovs
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.