Re: fixing a PUC / uart speed issue

2007-03-24 Thread Mike Tancsa

At 02:10 AM 3/24/2007, Marcel Moolenaar wrote:


Try changing the frequency from COM_FREQ to (4 * COM_FREQ). The

HTH,


Thanks, it fixed it!   BTW, would this be for all such cards with 
this PCI ID ? If so, should I file a PR ? If not, apart from keeping 
a private set of patches, whats the best way to work around this with 
each cvsup / buildworld ?


---Mike 


___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: fixing a PUC / uart speed issue

2007-03-24 Thread Marcel Moolenaar


On Mar 24, 2007, at 5:41 AM, Mike Tancsa wrote:


At 02:10 AM 3/24/2007, Marcel Moolenaar wrote:


Try changing the frequency from COM_FREQ to (4 * COM_FREQ). The

HTH,


Thanks, it fixed it!   BTW, would this be for all such cards with  
this PCI ID ? If so, should I file a PR ? If not, apart from  
keeping a private set of patches, whats the best way to work around  
this with each cvsup / buildworld ?


Well, the clock frequency used to feed the UART is really a property
of the add-in card, not of the chipset (Oxford in this case). While
many PCI cards have the vendor ID and device ID of the Oxford chipset
(and its manufacturer), it doesn't really help us to identify the
particular add-in card. IIRC, the sub-vendor and sub-device IDs are
all zeroes in your case. I doubt that we can use that to match the
actual add-in card and therefore use a 4x clock. Other cards exist
that are based on the Oxford chipset that use different clocks and
if they too have a sub-device or sub-vendor ID of all zeroes, then
there's still a conflict.

Maybe it's worthwhile to detect the clock frequency by programming
the UART for a fixed baudrate and then checking (using loopback)
how fast characters are being transmitted. Based on that it should
be possible to determine the right frequency.

Alternatively, we could also just use hints.

In any case: changing the entry in puc(4) will likely break some
other card, so that not a good idea.

FYI,

--
Marcel Moolenaar
[EMAIL PROTECTED]


___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


fixing a PUC / uart speed issue

2007-03-23 Thread Mike Tancsa

Hi,
I have a mini-pci UART that has a problem with its speed.  When I 
connect to it at 300bps the other side sees this as 1200.  e.g.


Other PC   PUC device
4800   1200
9600   2400
19200  4800

Its a mini-pci card on a soekris 4511 and dmesg on a RELENG_6 box shows

puc0: Oxford Semiconductor OX16PCI954 UARTs port 
0xe000-0xe01f,0xe020-0xe03f mem 
0xa000-0xafff,0xa0001000-0xa0001fff irq 10 at device 16.0 on pci0

uart4: 16950 or compatible on puc0
uart5: 16950 or compatible on puc0
uart6: 16950 or compatible on puc0
uart7: 16950 or compatible on puc0


[EMAIL PROTECTED]:16:0: class=0x070006 card=0x chip=0x95011415 
rev=0x00 hdr=0x00

vendor = 'Oxford Semiconductor Ltd'
device = 'OX16PCI954 Quad UART'
class  = simple comms
subclass   = UART
cap 01[40] = powerspec 1  supports D0 D2 D3  current D0
[EMAIL PROTECTED]:16:1:class=0x068000 card=0x 
chip=0x95101415 rev=0x00 hdr=0x00

vendor = 'Oxford Semiconductor Ltd'
device = 'OX16PCI954 PCI Interface (disabled)'
class  = bridge
cap 01[40] = powerspec 1  supports D0 D2 D3  current D0


product specs at
http://www.commell.com.tw/Product/Peripheral/MiniPCI/MP-954.HTM



I am guessing something needs to be changed in the puc driver for it ?

   /* Oxford Semiconductor OX16PCI954 PCI UARTs */
{   Oxford Semiconductor OX16PCI954 UARTs,
{   0x1415, 0x9501, 0,  0   },
{   0x, 0x, 0,  0   },
{
{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
},
},


but what ?

Other than this odd speed issue, the card seems to work fine.  Any 
pointers appreciated.


Thanks,

---Mike




Mike Tancsa,  tel +1 519 651 3400
Sentex Communications,[EMAIL PROTECTED]
Providing Internet since 1994www.sentex.net
Cambridge, Ontario Canada www.sentex.net/mike

___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: fixing a PUC / uart speed issue

2007-03-23 Thread Marcel Moolenaar


On Mar 23, 2007, at 9:49 PM, Mike Tancsa wrote:


Hi,
I have a mini-pci UART that has a problem with its speed.  When I  
connect to it at 300bps the other side sees this as 1200.  e.g.


Other PC   PUC device
4800   1200
9600   2400
19200  4800


*snip*


I am guessing something needs to be changed in the puc driver for it ?

   /* Oxford Semiconductor OX16PCI954 PCI UARTs */
{   Oxford Semiconductor OX16PCI954 UARTs,
{   0x1415, 0x9501, 0,  0   },
{   0x, 0x, 0,  0   },
{
{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
},
},


but what ?


Try changing the frequency from COM_FREQ to (4 * COM_FREQ). The
frequency is driving the baudrate generator and given that the
baudrate is off by a factor of 4, it follows that we program the
baudrate generator with a divisor that corresponds to a frequency
that's off by a factor of 4 as well.

HTH,

--
Marcel Moolenaar
[EMAIL PROTECTED]


___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]