Date: Sat, 3 Mar 2018 23:03:00 +0100 From: Stefan Blachmann <sblachmann@gmail.com> To: Andre Albsmeier <Andre.Albsmeier@siemens.com> Cc: Daniel Eischen <deischen@freebsd.org>, freebsd-hackers@freebsd.org Subject: Re: Adding support for MosChip 9912 PCIe (serial/parallel) cards Message-ID: <CACc-My07L_JiMiNfotcoKFhDxJO0PmPj-ySmQr5Xxm8ijzyBRA@mail.gmail.com> In-Reply-To: <20180303202345.GA32478@bali> References: <20180302061852.GA7887@bali> <Pine.GSO.4.64.1803020833290.14754@sea.ntplx.net> <20180303064400.GA27337@bali> <Pine.GSO.4.64.1803031051290.19549@sea.ntplx.net> <20180303184359.GA29745@bali> <Pine.GSO.4.64.1803031439210.20340@sea.ntplx.net> <20180303202345.GA32478@bali>
next in thread | previous in thread | raw e-mail | index | archive | help
In the forums there is a thread where a guy had to download the chips' datasheet to obtain the correct IDs to add to pucdata.c. You find code and links here: https://forums.freebsd.org/threads/pcie-6-port-serial-card.63489/ HTH On 3/3/18, Andre Albsmeier <Andre.Albsmeier@siemens.com> wrote: > On Sat, 03-Mar-2018 at 14:41:58 -0500, Daniel Eischen wrote: >> On Sat, 3 Mar 2018, Andre Albsmeier wrote: >> >> > On Sat, 03-Mar-2018 at 10:53:20 -0500, Daniel Eischen wrote: >> >> On Sat, 3 Mar 2018, Andre Albsmeier wrote: >> >> >> >>> On Fri, 02-Mar-2018 at 08:36:40 -0500, Daniel Eischen wrote: >> >>>> On Fri, 2 Mar 2018, Andre Albsmeier wrote: >> >>>> >> >>>>> I have a MosChip 9912 card (PCIe card with 1 parallel and 2 serial >> >>>>> ports) sitting here which does not get detected on 11.1. I tried >> >>>>> to simply add it to the uart and ppc drivers with >> >>>>> >> >>>> [ ... ] >> >>>> >> >>>> Do you try adding similar support to puc_pci_devices[] in >> >>>> sys/dev/puc/pucdata.c? >> >>> >> >>> Just tried that: >> >>> >> >>> @@ -1204,6 +1204,11 @@ >> >>> PUC_PORT_1S1P, 0x10, 4, 0, >> >>> }, >> >>> >> >>> +{ 0x9710, 0x9912, 0xa000, 0x3012, >> >>> + "NetMos NM9912 Dual UART and 1284 Printer port", >> >>> + DEFAULT_RCLK, >> >>> + PUC_PORT_2S1P, 0x10, 4, 0, >> >>> +}, >> >>> { 0x9710, 0x9865, 0xa000, 0x3012, >> >>> "NetMos NM9865 Dual UART and 1284 Printer port", >> >>> DEFAULT_RCLK, >> >>> >> >>> But the results are exactly the same. It also doesn't >> >>> matter if puc.ko is loaded at all. >> >> >> >> Are you sure your subvendor and subdevice are correct? I would >> > >> > No ;-). I have to use: 0x9710, 0x9912, 0xa000, 0x2000, >> > >> > Now I have the following behaviour: >> > >> > When I load puc.ko I get: >> > puc0: <NetMos NM9912 Dual UART and 1284 Printer port> at device 0.2 on >> > pci9 >> > >> > If I load ppc.ko now, I get: >> > ppc0: parallel port not found. >> > >> > But if I unload puc and ppc and load ppc again, I get: >> > >> > ppc0: <MosChip MCS9912 PCIe to Peripheral Controller> port >> > 0xd000-0xd007,0xd008-0xd00f mem 0x89200000-0x89200fff irq 20 at device >> > 0.2 on pci9 >> > ppc0: Generic chipset (EPP/NIBBLE) in COMPATIBLE mode >> > ppbus0: <Parallel port bus> on ppc0 >> > lpt0: <Printer> on ppbus0 >> > lpt0: Interrupt-driven port >> > >> > For all this I have to disable /boot/device.hints -- otherwise >> > the messages "driver bug: Unable to set devclass" comes back. >> > >> > So I think there are two problems: >> > >> > First the settings of the ISA stuff in /boot/device.hints conflicted >> > with the settings the driver probed. This would be easy to solve -- >> > just disable them in /boot/device.hints. >> > >> > Second it appears that ppc only attaches if puc did some kind of >> > initialisation first. But we have to detach puc so the ppc can attach. >> >> Strange. Did you try setting puc_load="YES" in /boot/loader.conf >> and rebooting? Or are you just loading and unloading modules >> for now? > > The latter. After each successful try I reboot to get rid of that > magic initialisation puc does. > > But maybe I am getting closer: The card has 2 serial and 1 parallel > port. But these 3 ports appear in pciconf as 3 seperate devices: > > none7@pci0:9:0:0: class=0x070002 card=0x1000a000 chip=0x99129710 > rev=0x00 hdr=0x00 > vendor = 'MosChip Semiconductor Technology Ltd.' > device = 'PCIe 9912 Multi-I/O Controller' > class = simple comms > subclass = UART > none8@pci0:9:0:1: class=0x070002 card=0x1000a000 chip=0x99129710 > rev=0x00 hdr=0x00 > vendor = 'MosChip Semiconductor Technology Ltd.' > device = 'PCIe 9912 Multi-I/O Controller' > class = simple comms > subclass = UART > none9@pci0:9:0:2: class=0x070103 card=0x2000a000 chip=0x99129710 > rev=0x00 hdr=0x00 > vendor = 'MosChip Semiconductor Technology Ltd.' > device = 'PCIe 9912 Multi-I/O Controller' > class = simple comms > subclass = parallel port > > Looking at the source code of puc, I find a place where it checks > the number of ports a device provides and aborts if it has only > one port. This would match my understanding that puc only exists > in order to help uart and ppc to work with multi-port devices > where all ports are handled by a single device in pciconf. > > Until now, I used PUC_PORT_2S1P in my puc entry. So puc assumes > that the card 0x2000a000 has 2 serial and 1 parallel port but > this is probably wrong as this 0x2000a000 card only has one > parallel port and the serials are handled by other devices. > So the correct entry would be PUC_PORT_1P but with one single > port puc does not attach. > > If all this is correct, I assume that puc should be left alone > and ppc_pci.c is the thing I have to look at. > > This also matches the fact that uart attaches well to these two > serial ports without the need of loading and unloading puc first > so there is probably some kind of device specific initialisation > missing in ppc_pci.c... > > -Andre > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACc-My07L_JiMiNfotcoKFhDxJO0PmPj-ySmQr5Xxm8ijzyBRA>