Re: Timeda 8-multiport adapter: only 2 ports available

From: Boris Samorodov <bsam_at_ipt.ru>
Date: Thu, 11 Dec 2008 03:02:42 +0300
Eygene Ryabinkin <rea-fbsd_at_codelabs.ru> writes:

> Boris, good day.
>
> Wed, Dec 10, 2008 at 05:13:48PM +0300, Boris Samorodov wrote:
>> Boris Samorodov <bsam_at_ipt.ru> writes:
>> 
>> > I've got a Sunix PCI Serial 8-channel Multiport adapter (Timedia chipset):
>> > -----
>> > puc0_at_pci0:5:2:0:        class=0x070002 card=0x40661409 chip=0x71681409 rev=0x01 hdr=0x00
>> >     vendor     = 'Timedia Technology Co Ltd'
>> >     device     = '40371409 PCI / ISA Asynchronous UART Signal Chips Solution'
>> 
>> Actually the card is 4066, while 4037 (according to pucdata.c) is indeed
>> a dual-port card. May be the card is wrongly interpreted by the OS?
>
> pciconf just don't know about 4066, so is prints what it has in the
> database.  This is irrelevant to the driver -- it discovers the correct
> chip with 8 ports:
>
>> > puc0: <Timedia technology 8 Port Serial> port 0xec00-0xec1f,0xe880-0xe88f,0xe800-0xe807,0xe480-0xe487,0xe400-0xe407,0xe080-0xe087 irq 18 at device 2.0 on pci5
>> > puc0: Reserved 0x20 bytes for rid 0x10 type 4 at 0xec00
>> > puc0: Reserved 0x10 bytes for rid 0x14 type 4 at 0xe880
>> > puc0: Reserved 0x8 bytes for rid 0x18 type 4 at 0xe800
>> > puc0: Reserved 0x8 bytes for rid 0x1c type 4 at 0xe480
>> > puc0: Reserved 0x8 bytes for rid 0x20 type 4 at 0xe400
>> > puc0: Reserved 0x8 bytes for rid 0x24 type 4 at 0xe080
>> > puc0: [FILTER]
>> > uart4: <16550 or compatible> on puc0
>> > uart4: [FILTER]
>> > uart4: fast interrupt
>> > uart5: <16550 or compatible> on puc0
>> > uart5: [FILTER]
>> > uart5: fast interrupt
>> > -----
>
> Judging by this output, the 6 ports that got their reservations at
> dev/pci/pci.c are the ones that aren't recognized by uart.  You may need
> to add trace printfs to uart_puc_probe (uart_bus_puc.c) and to
> uart_bus_probe (uart_core.c), just around the register resource
> allocator.  This should show what devices are passed to the probe
> routines and which are rejected.  Be sure to include 'rid' values to
> your debug output to get the idea what ports we're speaking about.

Seems that just the same card should work:
http://lists.freebsd.org/pipermail/freebsd-stable/2008-May/042505.html

I've added some diagnistic. But 'rid' is not what you want, I guess:
-----
puc0: <Timedia technology 8 Port Serial> port 0xec00-0xec1f,0xe880-0xe88f,0xe800-0xe807,0xe480-0xe487,0xe400-0xe407,0xe080-0xe087 irq 18 at device 2.0 on pci5
puc0: Reserved 0x20 bytes for rid 0x10 type 4 at 0xec00
puc0: Reserved 0x10 bytes for rid 0x14 type 4 at 0xe880
puc0: Reserved 0x8 bytes for rid 0x18 type 4 at 0xe800
puc0: Reserved 0x8 bytes for rid 0x1c type 4 at 0xe480
puc0: Reserved 0x8 bytes for rid 0x20 type 4 at 0xe400
puc0: Reserved 0x8 bytes for rid 0x24 type 4 at 0xe080
puc0: [FILTER]
uart4: uart_puc_probe: type = 1, error = 0
uart4: uart_puc_probe: probing for uart bus
uart4: uart_bus_probe: Entering
uart4: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x0
ns8250_probe: no errors, exiting
ns8250_bus_probe:656: continue
ns8250_bus_probe:664: continue
ns8250_bus_probe:749: Reset FIFOs
ns8250_bus_probe:752: FIFO count=16
ns8250_bus_probe:792: no errors, exiting
uart4: uart_bus_probe: Uart probe returned 0
uart4: uart_bus_probe: exiting
uart4: uart_puc_probe: type = 1, error = 0
uart4: uart_puc_probe: probing for uart bus
uart4: uart_bus_probe: Entering
uart4: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0xc1
ns8250_probe: got MCR register: 0x8
ns8250_probe: no errors, exiting
ns8250_bus_probe:656: continue
ns8250_bus_probe:664: continue
ns8250_bus_probe:749: Reset FIFOs
ns8250_bus_probe:752: FIFO count=16
ns8250_bus_probe:792: no errors, exiting
uart4: uart_bus_probe: Uart probe returned 0
uart4: uart_bus_probe: exiting
uart4: <16550 or compatible> on puc0
uart4: [FILTER]
uart4: fast interrupt
uart5: uart_puc_probe: type = 1, error = 0
uart5: uart_puc_probe: probing for uart bus
uart5: uart_bus_probe: Entering
uart5: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x0
ns8250_probe: no errors, exiting
ns8250_bus_probe:656: continue
ns8250_bus_probe:664: continue
ns8250_bus_probe:749: Reset FIFOs
ns8250_bus_probe:752: FIFO count=16
ns8250_bus_probe:792: no errors, exiting
uart5: uart_bus_probe: Uart probe returned 0
uart5: uart_bus_probe: exiting
uart5: uart_puc_probe: type = 1, error = 0
uart5: uart_puc_probe: probing for uart bus
uart5: uart_bus_probe: Entering
uart5: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0xc1
ns8250_probe: got MCR register: 0x8
ns8250_probe: no errors, exiting
ns8250_bus_probe:656: continue
ns8250_bus_probe:664: continue
ns8250_bus_probe:749: Reset FIFOs
ns8250_bus_probe:752: FIFO count=16
ns8250_bus_probe:792: no errors, exiting
uart5: uart_bus_probe: Uart probe returned 0
uart5: uart_bus_probe: exiting
uart5: <16550 or compatible> on puc0
uart5: [FILTER]
uart5: fast interrupt
uart6: uart_puc_probe: type = 1, error = 0
uart6: uart_puc_probe: probing for uart bus
uart6: uart_bus_probe: Entering
uart6: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x40
ns8250_probe: got MCR wrong register, exiting with ENXIO
ns8250_bus_probe:645: error at ns8250_probe(), exiting, returning 6
uart6: uart_bus_probe: Uart probe returned 6
uart6: uart_bus_probe: exiting
uart6: uart_puc_probe: type = 1, error = 0
uart6: uart_puc_probe: probing for uart bus
uart6: uart_bus_probe: Entering
uart6: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x40
ns8250_probe: got MCR wrong register, exiting with ENXIO
ns8250_bus_probe:645: error at ns8250_probe(), exiting, returning 6
uart6: uart_bus_probe: Uart probe returned 6
uart6: uart_bus_probe: exiting
uart6: uart_puc_probe: type = 1, error = 0
uart6: uart_puc_probe: probing for uart bus
uart6: uart_bus_probe: Entering
uart6: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x40
ns8250_probe: got MCR wrong register, exiting with ENXIO
ns8250_bus_probe:645: error at ns8250_probe(), exiting, returning 6
uart6: uart_bus_probe: Uart probe returned 6
uart6: uart_bus_probe: exiting
uart6: uart_puc_probe: type = 1, error = 0
uart6: uart_puc_probe: probing for uart bus
uart6: uart_bus_probe: Entering
uart6: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x40
ns8250_probe: got MCR wrong register, exiting with ENXIO
ns8250_bus_probe:645: error at ns8250_probe(), exiting, returning 6
uart6: uart_bus_probe: Uart probe returned 6
uart6: uart_bus_probe: exiting
uart6: uart_puc_probe: type = 1, error = 0
uart6: uart_puc_probe: probing for uart bus
uart6: uart_bus_probe: Entering
uart6: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x40
ns8250_probe: got MCR wrong register, exiting with ENXIO
ns8250_bus_probe:645: error at ns8250_probe(), exiting, returning 6
uart6: uart_bus_probe: Uart probe returned 6
uart6: uart_bus_probe: exiting
uart6: uart_puc_probe: type = 1, error = 0
uart6: uart_puc_probe: probing for uart bus
uart6: uart_bus_probe: Entering
uart6: /usr/src/sys/dev/uart/uart_core.c:374: continue with rid=0x0
ns8250_bus_probe: entering
ns8250_probe: entering
ns8250_probe: got IIR register: 0x1
ns8250_probe: got MCR register: 0x40
ns8250_probe: got MCR wrong register, exiting with ENXIO
ns8250_bus_probe:645: error at ns8250_probe(), exiting, returning 6
uart6: uart_bus_probe: Uart probe returned 6
uart6: uart_bus_probe: exiting
-----

WBR
-- 
Boris Samorodov (bsam)
Research Engineer, http://www.ipt.ru Telephone & Internet SP
FreeBSD committer, http://www.FreeBSD.org The Power To Serve
Received on Wed Dec 10 2008 - 23:02:48 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:38 UTC