puc/sio/uart question

I have an IBM3250, which has a internal serial port, which I'm using for a console, which works fine, under FreeBSD 7.2 STABLE. I need to add some additional serial ports for some other devices. I have a SIIG CyberSerial Dual PCIe (JJ-E20011-S2). I've added puc in the kernel config
Code:
# Serial (COM) ports
device          sio
device          uart
device          puc
the device shows up in the boot
Code:
puc0: <Oxford Semiconductor OX16PCI954 UARTs> port 0x2020-0x203f,0x2000-0x201f mem 0xe8101000-0xe8101fff,0xe8100000-0xe8100fff irq 16 at device 0.0 on pci9
puc0: [FILTER]
uart0: <16950 or compatible> on puc0
uart0: [FILTER]
uart1: <16950 or compatible> on puc0
uart1: [FILTER]
uart2: <16950 or compatible> on puc0
uart2: [FILTER]
uart3: <16950 or compatible> on puc0
uart3: [FILTER]
and I get the devices in /dev
Code:
/dev/cuad0
/dev/cuad0.init
/dev/cuad0.lock
/dev/cuau0
/dev/cuau0.init
/dev/cuau0.lock
/dev/cuau1
/dev/cuau1.init
/dev/cuau1.lock
/dev/cuau2
/dev/cuau2.init
/dev/cuau2.lock
/dev/cuau3
/dev/cuau3.init
/dev/cuau3.lock
/dev/ttyu0
/dev/ttyu0.init
/dev/ttyu0.lock
/dev/ttyu1
/dev/ttyu1.init
/dev/ttyu1.lock
/dev/ttyu2
/dev/ttyu2.init
/dev/ttyu2.lock
/dev/ttyu3
/dev/ttyu3.init
/dev/ttyu3.lock
None of these seem to work, I don't see anything on output or input, either I/O or even modem, or flow control signals.

I've tried adding COM_MULTIPORT in the kernel with no difference. I also tried removing uart, and the the devices all changed to ttyd[0-4]* and cuaa[0-4]*, the ports didn't work, and broke the serial console, which had been ttyd0 before.

I've had the same results in more then one X3250 with another of the same card.

There must be something I'm missing, but can't seem to find it, so wanted to ask for any other hints on things to try.
 
I don'[t see anything I changed, but I am seeing modem control signals, but the speed settings don't seem to be working right.
 
serial port problem fixed

I found a reference to the default clocking rate being off in
/usr/src/sys/dev/puc/pucdata.c for some serial cards.
In pucdata.c I changed the entry for my card from
Code:
        {   0x1415, 0x950a, 0xffff, 0,
            "Oxford Semiconductor OX16PCI954 UARTs",
            DEFAULT_RCLK,
            PUC_PORT_4S, 0x10, 0, 8,
        },
to
Code:
         {   0x1415, 0x950a, 0xffff, 0,
            "Oxford Semiconductor OX16PCI954 UARTs",
            DEFAULT_RCLK *10,
            PUC_PORT_4S, 0x10, 0, 8,
        },
and that fixed the serial rate problem.
 
DrZarkov said:
I found a reference to the default clocking rate being off in
/usr/src/sys/dev/puc/pucdata.c for some serial cards.
In pucdata.c I changed the entry for my card from

...

and that fixed the serial rate problem.

That's because it's using a wildcard for the subdevice, instead of setting the appropriate chipset specific read clock for the specific subdevice. If you have devinfo -v output that can be provided, I'll see about submitting a patch for that specific case.
 
Back
Top