Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: adding devices to puc(4)



On May 7,  6:01pm, Masanobu SAITOH wrote:
} On 2018/05/07 16:38, John Nemeth wrote:
} >       I'm trying to add an Oxford Semiconductor 4-port serial card
} > to puc(4).  Using the datasheet, I've gotten to the point where
} > all four serial ports are probed and attached.  However, I don't
} > seem to be able to communicate through the ports.  And, there
} > doesn't seem to be any real documentation on puc(4).  I'm trying
} > to figure out what the various flags mean.  A URL for the datasheet
} > is:
} > 
} > https://www.semiconductorstore.com/pdf/newsite/oxford/OXPCIe954_ds.pdf
} 
}   It seems that the Legacy mode (e.g. I/O mapped) of OXPCIe952 is removed
} from OXPCIe954. It also seems it has no INTx support, right? Are the device's

     The datasheet says that INTx is supported.  It also says that
it is MSI/MSI-X compatible.

} com registers not 4 byte stride but 1 byte stride?

     It says that the UARTs are register compatible with the 16C450,
16C550, 16C654, and 16C750 UARTs.  After reset, it comes up in
16C450 mode.

     I don't understand the question about stride.  The original
8250 used eight I/O ports one after the other.  The OXPCIe954 when
in the default 16C450 mode has the same set of registers packed
together one after the other.

     The dmesg output looks like:

puc0 at pci9 dev 0 function 0: Oxford Semiconductor OXPCIe954 UART (com, com, com, com)
com2 at puc0 port 0 (16550-compatible): interrupting at ioapic0 pin 18
com2: ns16550a, working fifo
com3 at puc0 port 1 (16550-compatible): interrupting at ioapic0 pin 18
com3: ns16550a, working fifo
com4 at puc0 port 2 (16550-compatible): interrupting at ioapic0 pin 18
com4: ns16550a, working fifo
com5 at puc0 port 3 (16550-compatible): interrupting at ioapic0 pin 18
com5: ns16550a, working fifo

} > Here are the patches that I used to get it started:
} > 
} > Index: pcidevs
} > ===================================================================
} > RCS file: /cvsroot/src/sys/dev/pci/pcidevs,v
} > retrieving revision 1.1333
} > diff -u -r1.1333 pcidevs
} > --- pcidevs	3 May 2018 04:21:10 -0000	1.1333
} > +++ pcidevs	7 May 2018 07:58:28 -0000
} > @@ -6280,6 +6280,7 @@
} >   product OXFORDSEMI OXPCIE952_4	0xc141	OXPCIe952
} >   product OXFORDSEMI OXPCIE952_5	0xc144	OXPCIe952
} >   product OXFORDSEMI OXPCIE952_6	0xc145	OXPCIe952
} > +product OXFORDSEMI OXPCIE952_7	0xc208	OXPCIe952
} 
} Not 952 but 954

     Oops, right, patch updated.

} >   /* Packet Engines products */
} >   product PACKETENGINES GNICII	0x0911	G-NIC II Ethernet
} > 
} > Index: pucdata.c
} > ===================================================================
} > RCS file: /cvsroot/src/sys/dev/pci/pucdata.c,v
} > retrieving revision 1.101
} > diff -u -r1.101 pucdata.c
} > --- pucdata.c	13 Apr 2018 07:57:04 -0000	1.101
} > +++ pucdata.c	7 May 2018 07:58:53 -0000
} > @@ -1108,6 +1108,19 @@
} >   	    },
} >   	},
} >   
} > +	/* Oxford Semiconductor OXPCIe952 PCIe UARTs */
} > +	{   "Oxford Semiconductor OXPCIe952 UART",
} > +	    {	PCI_VENDOR_OXFORDSEMI, PCI_PRODUCT_OXFORDSEMI_OXPCIE952_7,
} > +		0, 0 },
} > +	    {	0xffff,	0xffff,	0,	0	},
} > +	    {
} > +		{ PUC_PORT_TYPE_COM, PCI_BAR0, 0x1000, COM_FREQ },
} > +		{ PUC_PORT_TYPE_COM, PCI_BAR0, 0x1200, COM_FREQ },
} > +		{ PUC_PORT_TYPE_COM, PCI_BAR0, 0x1400, COM_FREQ },
} > +		{ PUC_PORT_TYPE_COM, PCI_BAR0, 0x1600, COM_FREQ },
} > +	    },
} > +	},
} > +
} >   	/* Oxford Semiconductor OXmPCI952 PCI UARTs */
} >   	{   "Oxford Semiconductor OXmPCI952 UARTs",
} >   	    {	PCI_VENDOR_OXFORDSEMI,	PCI_PRODUCT_OXFORDSEMI_EXSYS_EX41092,
} > 
} 
}   It seems FreeBSD's puc(4) support OXPCIe954, so it will help
} to see FreeBSD's sys/dev/puc/pucdata.c.

     Didn't really help as their puc(4) seems to have diverged
quite a bit from ours.  The struct used to add devices is quite
different.

}   If it's a PCIe addin card, could you tell me the product name?

    It's a StarTech.com PEX4S952.

} (I don't say I'll work to support it :))
} 
} FYI:
} 		http://mail-index.netbsd.org/tech-kern/2014/02/09/msg016616.html
} 
} 	http://mail-index.netbsd.org/tech-kern/2014/01/23/msg016459.html
} 	(If you're trying to use the device for console, you will modify
} 	#if 0'd code in the diff.)

     I don't need to use it as console.

} sys/dev/ic/com.c has a lof of #ifdefs. Some of them should not be determined
} at compile time (e.g. COM16650 and COM_REGMAP), but the change is not easy.
} Please someone(TM) do it.
} 
}-- End of excerpt from Masanobu SAITOH


Home | Main Index | Thread Index | Old Index