Problem to use a Oxford semiconductor Intelligent DUAL Channe l UA RT (OX16PCI952)

Problem to use a Oxford semiconductor Intelligent DUAL Channe l UA RT (OX16PCI952)

Post by Ed Vanc » Thu, 28 Feb 2002 04:20:15



Hi Alexis,

The 1.8432 MHz frequency is the "standard" frequency for PC UARTs. That's a
good thing. The "autoconfig failed" message is not a good thing.

Since you corrected the #define for the 16PCI952 UART, the 5.0.5 driver
should be matching your card with the following entry at serial.c:4341:

        {       PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952,
                PCI_ANY_ID, PCI_ANY_ID,
                SPCI_FL_BASE0 , 2, 115200 },

Which looks correct.

I just tried a quick test with an unmodified 5.0.5c (later) driver with my
954 chip and the autoconfig succeeds and it sets the proper divisor (12).

I will setup a 5.0.5 serial driver and see what happens with my 954 chip.

What vendor and model is your serial card with the 952 UART on it?

Please send me the output of the following two commands:

        setserial -a /dev/ttyS4
        stty -a < /dev/ttyS4

Please time the following command. It should take 53 seconds at 9600 bps:

        dd ibs=512 count=100 < /dev/zero | cat > /dev/ttyS4

Thanks for the additional info.
Ed Vance

----------------------------------------------------------------
Ed Vance              e...@macrolink.com
Macrolink, Inc.       1500 N. Kellogg Dr  Anaheim, CA  92807
----------------------------------------------------------------

-----Original Message-----
From: alexis raynaud [mailto:arayn...@alphalink.fr]
Sent: Tuesday, February 26, 2002 8:33 AM
To: 'Ed Vance'
Subject: RE: Problem to use a Oxford semiconductor Intelligent DUAL

Channe l UA RT (OX16PCI952)

Hi Ed Vance,

I've got some news (but not solution yet)

To answer your question the card's oscillator rate seems to be at 1.8432
MHz

Next I download the latest version of serial on the sourceforg site and
make the next modification on the sources :
        #define PCI_DEVICE_ID_OXSEMI_16PCI952 0x950A
                changing  to
        #define PCI_DEVICE_ID_OXSEMI_16PCI952 0x9521
and rebuilt the kernel (Linux version 2.2.20 (root@tech001) (gcc version
2.96 20000731 (Mandrake Linux 8.1 2.96-0.62mdk)) #9 Thu Feb 21 09:13:45
CET 2002)

when I insert the new module serial.o the kernel returns in the
/var/log/message
        Feb 26 16:38:09 fw kernel: Serial driver version 5.05
(2000-09-14) with MANY_PORTS MULTIPORT SHARE_IRQ        SERIAL_PCI
enabled
        Feb 26 16:38:09 fw kernel: ttyS00 at 0x03f8 (irq = 4) is a
16550A
        Feb 26 16:38:09 fw kernel: ttyS01 at 0x02f8 (irq = 3) is a
16550A
        Feb 26 16:38:09 fw kernel: ttyS04 at port 0xfc78 (irq = 10) is a
16C950/954
        Feb 26 16:38:09 fw kernel: register_serial(): autoconfig failed

yeh it's detect my card with the good irq and port, but when I plug a
modem, ligths are blinking but the modem doesn't work at all.

I try other thing like setserial set_multiport, but I don't know what to
put for the option "port_monitor", "port1", "mask1" and "match1"

Have U any new idea ?

thanks

-----Message d'origine-----
De : Ed Vance [mailto:E...@macrolink.com]
Envoy : vendredi 15 fvrier 2002 20:17
: 'alexis raynaud'
Cc : 'linux-ser...@vger.kernel.org'; 'linux-kernel'
Objet : RE: Problem to use a Oxford semiconductor Intelligent DUAL
Channe l UA RT (OX16PCI952)

Hi Alexis,

There is no matching entry for this board in the serial driver's
pci_boards
table. The 9521 device code is a new one. The driver is looking for 950A
for
16PCI952 UART.

Since you are getting data output, I suspect your card's oscillator does
not
match the driver's default. What is the highest supported baud rate that
this card? (the rate you get when UART divisor reg is = 1) Default is
115200
bps. If your card's oscillator rate is not 1.8432 MHz, then the default
baud
rate calculation will be wrong.

If you can find out the maximum baud rate, try adjusting the it for the
port
with setserial's baud_base parameter. Two common base baud rates for 95X
based cards are 921600 and 3125000.

If you cannot be sure what the card's baud rate clock base is, then
calculate the actual data rate by cat'ing a large file out the port and
timing it. Calculate the bytes per second and multiply by the number of
bit-times for your async config (usually 10, 1 start, 8 data, 1 stop).
This
will tell you for sure if the base_baud value needs to be adjusted.

let me know what happens.

Good luck,
Ed Vance

----------------------------------------------------------------
Ed Vance              e...@macrolink.com
Macrolink, Inc.       1500 N. Kellogg Dr  Anaheim, CA  92807
----------------------------------------------------------------

-----Original Message-----
From: alexis raynaud [mailto:arayn...@alphalink.fr]
Sent: Friday, February 15, 2002 7:42 AM
To: 'linux-ser...@vger.kernel.org'
Subject: Problem to use a Oxford semiconductor Intelligent DUAL Channel
UA RT (OX16PCI952)

Hello, I hope U can help me...

here is my configuration :

I have a Intel motherboard AL440LX, with a PII 400 + a OX16PCI952.
My system is a RedHat 7.1 seawolf (and I also try on a Mandrake 8.1)
with a kernel 2.4.2-2.
Here are my version of serial's rpm :
                statserial-1.1-20
                setserial-2.17-2

Here is the lspci -v :
        00:00.0 Host bridge: Intel Corporation 440LX/EX - 82443LX/EX
Host bridge (rev 03)
                Flags: bus master, medium devsel, latency 32
                Memory at f8000000 (32-bit, prefetchable) [size=64M]
                Capabilities: [a0] AGP version 1.0

        00:01.0 PCI bridge: Intel Corporation 440LX/EX - 82443LX/EX AGP
bridge (rev 03) (prog-if 00 [Normal decode])
                Flags: bus master, 66Mhz, medium devsel, latency 64
                Bus: primary=00, secondary=01, subordinate=01,
sec-latency=64

        00:07.0 ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 01)
                Flags: bus master, medium devsel, latency 0

        00:07.1 IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev
01) (prog-if 80 [Master])
                Flags: bus master, medium devsel, latency 64
                I/O ports at fc90 [size=16]

        00:07.2 USB Controller: Intel Corporation 82371AB PIIX4 USB (rev
01) (prog-if 00 [UHCI])
                Flags: bus master, medium devsel, latency 64, IRQ 9
                I/O ports at fcc0 [size=32]

        00:07.3 Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 01)
                Flags: medium devsel, IRQ 9

        00:0d.0 VGA compatible controller: ATI Technologies Inc 3D Rage
I/II 215GT [Mach64 GT] (rev 41) (prog-if 00 [VGA])
                Subsystem: ATI Technologies Inc 3D Rage I/II 215GT
[Mach64 GT]
                Flags: bus master, stepping, medium devsel, latency 66
                Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
                I/O ports at f800 [size=256]
                Memory at fedff000 (32-bit, non-prefetchable) [size=4K]
                Expansion ROM at <unassigned> [disabled] [size=128K]

        00:0e.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139 (rev 10)
                Subsystem: Realtek Semiconductor Co., Ltd. RT8139
                Flags: bus master, medium devsel, latency 64, IRQ 11
                I/O ports at f400 [size=256]
                Memory at fedfec00 (32-bit, non-prefetchable) [size=256]
                Capabilities: [50] Power Management version 2
                Capabilities: [60] Vital Product Data

        00:0f.0 Serial controller: Oxford Semiconductor Ltd: Unknown
device 9521 (prog-if 06 [16950])
                Subsystem: Oxford Semiconductor Ltd: Unknown device 0001
                Flags: medium devsel, IRQ 10
                I/O ports at fc78 [size=8]
                I/O ports at fc88 [size=8]
                I/O ports at fce0 [size=32]
                Memory at fedfc000 (32-bit, non-prefetchable) [size=4K]
                Memory at fedfd000 (32-bit, non-prefetchable) [size=4K]
                Capabilities: [40] Power Management version 1

        00:0f.1 Parallel controller: Oxford Semiconductor Ltd: Unknown
device 9523 (prog-if 01 [BiDir])
                Subsystem: Oxford Semiconductor Ltd: Unknown device 0001
                Flags: medium devsel, IRQ 10
                I/O ports at fc68 [size=8]
                I/O ports at fc74 [size=4]
                I/O ports at fca0 [size=32]
                Memory at fedfb000 (32-bit, non-prefetchable) [size=4K]
                Capabilities: [40] Power Management version 1

I also make a : setserial /dev/ttyS2 port 0xfc78 irq 10 that returns

        /dev/ttyS2, UART: 16950/954, Port: 0xfc78, IRQ: 10
witch seems to be good

but when I connect a modem (UsRobotics 56k FaxModem ext)on the Serial
port and run the commande "wvdialconf",
I can seen the modem light blinking (Rd, Sd) but not detect it
here is the result of the wvdialconf :

        ttyS2<*1>: ATQ0 V1 E1 -- ATQ0 V1 E1
        ttyS2<*1>: ATQ0 V1 E1 -- ATQ0 V1 E1
        ttyS2<*1>: ATQ0 V1 E1 -- ATQ0 V1 E1
        ttyS2<*1>: nothing.
        ttyS0<*1>: ATQ0 V1 E1 -- ATQ0 V1 E1 -- ATQ0 V1 E1 -- nothing.
        ttyS1<*1>: ATQ0 V1 E1 -- ATQ0 V1 E1 -- ATQ0 V1 E1 -- nothing.
        Port Scan<*1>: S3   S4   S5   S6   S7   S8   S9   S10
        Port Scan<*1>: S11  S12  S13  S14  S15  S16  S17  S18
        Port Scan<*1>: S19  S20  S21  S22  S23  S24  S25  S26
        Port Scan<*1>: S27  S28  S29  S30  S31  SA0  SA1  SA2
        Port Scan<*1>: SC0  SC1  SC2  SC3  SI0  SI1  SI2  SI3
        Port Scan<*1>: SI4  SI5  SI6  SI7  SI8  SI9  SI10 SI11
        Port Scan<*1>: SI12 SI13 SI14 SI15 SR0  SR1  SR2  SR3
        Port Scan<*1>: SR4  SR5  SR6  SR7  SR8  SR9  SR10 SR11
        Port Scan<*1>: SR12 SR13 SR14 SR15 SR16 SR17 SR18 SR19
        Port Scan<*1>: SR20 SR21 SR22 SR23 SR24 SR25 SR26 SR27
        Port Scan<*1>: SR28 SR29 SR30 SR31 SR256 SR257 SR258 SR259
        Port Scan<*1>: SR260 SR261 SR262 SR263 SR264 SR265 SR266 SR267
        Port Scan<*1>: SR268 SR269 SR270 SR271 SR272 SR273 SR274 SR275
        Port Scan<*1>: SR276 SR277 SR278 SR279 SR280 SR281 SR282 SR283
        Port Scan<*1>: SR284 SR285 SR286 SR287

In advance,
Thank a lot

-
To unsubscribe from this list: send the line "unsubscribe linux-serial"
in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

Problem to use a Oxford semiconductor Intelligent DUAL Channe l UA RT (OX16PCI952)

Post by Ed Vanc » Thu, 28 Feb 2002 07:40:06


Hi Alexis,

I had another thought about the "autoconfig failed" message ...


> when I insert the new module serial.o the kernel returns in the
> /var/log/message
>    Feb 26 16:38:09 fw kernel: Serial driver version 5.05
> (2000-09-14) with MANY_PORTS MULTIPORT SHARE_IRQ   SERIAL_PCI
> enabled
>    Feb 26 16:38:09 fw kernel: ttyS00 at 0x03f8 (irq = 4) is a
> 16550A
>    Feb 26 16:38:09 fw kernel: ttyS01 at 0x02f8 (irq = 3) is a
> 16550A
>    Feb 26 16:38:09 fw kernel: ttyS04 at port 0xfc78 (irq = 10) is a
> 16C950/954
>    Feb 26 16:38:09 fw kernel: register_serial(): autoconfig failed

Please set the SERIAL_DEBUG_AUTOCONF #define in serial.c at line 129. This
will tell us if the UART is failing the loopback test at line 3658.

I do not know why the loopback test would fail on the 16PCI952, but that is
one of only two paths through autoconfig() that leave the port type as
PORT_UNKNOWN when control returns to the caller.  To get the "autoconfig
fails" message at line 5354, which is in the dmesg output, the port type
returned by autoconfig() must be PORT_UNKNOWN.

If the loopback test passes, then it must take the "case 1:" branch at line
3677 to stay PORT_UNKNOWN or miss all of the cases, as there is no default
case in the switch. To miss the case values, serial_in() would have to
return an int with a bit set in the range of bits 8 - 13, which is supposed
to be impossible.

If the switch runs any case but 1, then the port type will not be returned
as PORT_UNKNOWN. (I did not spot a path that later sets it back to
PORT_UNKNOWN.)

At least, the debug message will confirm or deny a failure of the loopback
test as cause of the "autoconfig failed" message.

Best regards,
Ed Vance

----------------------------------------------------------------

Macrolink, Inc.       1500 N. Kellogg Dr  Anaheim, CA  92807
----------------------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

Problem to use a Oxford semiconductor Intelligent DUAL Channe l UA RT (OX16PCI952)

Post by Ed Vanc » Fri, 01 Mar 2002 07:30:14


Hi Alexis,

Thanks for the good data. I think I understand at least part of what is
happening.

It sounds like the card is the Oxford Semi UART evaluation card for the
16C952 chip. I could not find specific documentation for it on oxsemi web
site, so I do not know how to configure the jumpers. Make sure that the card
jumpers are set to enable 128 byte FIFO size on the PCI UART. If there is no
jumper for this, that is good.

The measured baud rate from your time test is much slower than the target
rate of 9600 bps. Your measured transmit time of 425 seconds for 51200 bytes
suggests that the port is actually running at about 1200 bps instead of 9600
bps. The base_baud is shown by setserial to be set at 3125000, so to make
the actual rate 8 times higher suggests a base_baud value of about 390625,
which I did not expect. It is a very strange base_baud number. Check to see
if the card has a jumper to select between an oscillator crystal and a
packaged oscillator, like the 16C954 evaluation card has. If the card is
equipped like this, move the jumper to select the 1.8432 MHz oscillator. I
think you may have a 25.0 MHz oscillator selected. That would divide down
with a prescalar value of 4 to 6.25 MHz, which is 16 times 390625, the
measured base_baud. I could be wrong ... Perhaps it is a 6.250 MHz
oscillator and the prescalar is 1, which is how the 952 comes out of reset.

The "rs port monitor (single)" log message that you are getting during
operation is probably caused by using the "set_multiport" option with
setserial. Do *not* set any multiport options for this UART. "multiport" is
only for cards that have a card level pending interrupt register, not for
all cards that have more than one port.

If the corresponding entry for your card in the pci_boards array is correct,
there is no need to touch the port with setserial at all.

For the next test, change the pci_boards array entry at serial.c:4341 (ver
5.05) so it looks like this:

        {       PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952,
                PCI_ANY_ID, PCI_ANY_ID,
                SPCI_FL_BASE0 | SPCI_FL_BASE_TABLE , 2, 115200 },

This adds the base table flag so the second port is found at the second BAR,
as specified by the datasheet. Perhaps this was the source of the autoconfig
failure? If you cannot change the oscillator frequency to 1.8432 MHz, you
can change the base_baud value in the entry from 115200 to 390625 just to
see if it works. Please do *not* change the port options with setserial
before you test it.

Please run the time test again to see what the actual baud rate is:

        dd ibs=512 count=100 < /dev/zero | cat > /dev/ttyS4

It should take about 53 seconds at 9600 bps.

If anybody out there monitoring the list has one of these cards working, we
would both like to hear from you.

Good luck,
Ed Vance

-----Original Message-----

Sent: Wednesday, February 27, 2002 12:24 AM
To: 'Ed Vance'
Subject: RE: Problem to use a Oxford semiconductor Intelligent DUAL

Channe l UA RT (OX16PCI952)

Hi Ed, thank a lot

the vendor is Oxford Semiconductor (www.oxsemi.com) and the model card a
OX16PCI952

the "setserial -a /dev/ttyS4" gives

        /dev/ttyS4, Line 4, UART: 16950/954, Port: 0xfc78, IRQ: 10
              Baud_base: 3125000, close_delay: 50, divisor: 0
                closing_wait: 3000
                Flags: spd_normal skip_test

and the "tty -a < /dev/ttyS4" gives
        speed 9600 baud; rows 0; columns 0; line = 0;
        intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol =
<undef>; eol2 = <undef>; start = ^Q; stop = ^S;             susp =
^Z; rprnt = ^R; werase = ^W; lnext = ^V;
        flush = ^O; min = 1; time = 0;
        -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
        -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr
icrnl ixon -ixoff -iuclc -ixany -imaxbel
        opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0
tab0 bs0 vt0 ff0
        isig icanon iexten echo echoe echok -echonl -noflsh -xcase
-tostop -echoprt echoctl e*

Your test take 7mn05s

And what do you know about "setserial set_multiport"
What are the signification of the options "port_monitor", "port1",
"mask1" and "match1"

BR

Hi Alexis,

The 1.8432 MHz frequency is the "standard" frequency for PC UARTs.
That's a
good thing. The "autoconfig failed" message is not a good thing.

Since you corrected the #define for the 16PCI952 UART, the 5.0.5 driver
should be matching your card with the following entry at serial.c:4341:

        {       PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI952,
                PCI_ANY_ID, PCI_ANY_ID,
                SPCI_FL_BASE0 , 2, 115200 },

Which looks correct.

I just tried a quick test with an unmodified 5.0.5c (later) driver with
my
954 chip and the autoconfig succeeds and it sets the proper divisor
(12).

I will setup a 5.0.5 serial driver and see what happens with my 954
chip.

What vendor and model is your serial card with the 952 UART on it?

Please send me the output of the following two commands:

        setserial -a /dev/ttyS4
        stty -a < /dev/ttyS4

Please time the following command. It should take 53 seconds at 9600
bps:

        dd ibs=512 count=100 < /dev/zero | cat > /dev/ttyS4

Thanks for the additional info.
Ed Vance

----------------------------------------------------------------

Macrolink, Inc.       1500 N. Kellogg Dr  Anaheim, CA  92807
----------------------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://www.veryComputer.com/
Please read the FAQ at  http://www.veryComputer.com/