Date: Tue, 6 Mar 2018 08:27:27 +0100 From: Andre Albsmeier <Andre.Albsmeier@siemens.com> To: Daniel Eischen <deischen@freebsd.org> Cc: Andre Albsmeier <Andre.Albsmeier@siemens.com>, freebsd-hackers@FreeBSD.org Subject: Re: Adding support for MosChip 9912 PCIe (serial/parallel) cards Message-ID: <20180306072727.GA86364@bali> In-Reply-To: <Pine.GSO.4.64.1803031439210.20340@sea.ntplx.net> 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>
next in thread | previous in thread | raw e-mail | index | archive | help
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? I am now using this diff to access the MCS9912. I am (mis)using puc to initialise whatever is needed for the printer port to work and let ppc attach to puc. As puc does not attach to single port devices, I have removed this check. uart works by simply adding the device. This is all quite ugly but it works... --- ./puc/puc.c.ORI 2018-03-06 06:21:35.939042000 +0100 +++ ./puc/puc.c 2018-03-06 06:21:10.337686000 +0100 @@ -458,8 +458,10 @@ sc->sc_cfg = cfg; /* We don't attach to single-port serial cards. */ +#if 0 if (cfg->ports == PUC_PORT_1S || cfg->ports == PUC_PORT_1P) return (EDOOFUS); +#endif error = puc_config(sc, PUC_CFG_GET_NPORTS, 0, &res); if (error) return (error); --- ./puc/pucdata.c.ORI 2016-12-27 14:33:54.000000000 +0100 +++ ./puc/pucdata.c 2018-03-06 06:19:26.764167000 +0100 @@ -1216,6 +1216,12 @@ PUC_PORT_2P, 0x10, 4, 0, }, +{ 0x9710, 0x9912, 0xa000, 0x2000, + "NetMos NM9912 Printer port", + DEFAULT_RCLK, + PUC_PORT_1P, 0x10, 4, 0, +}, + { 0xb00c, 0x021c, 0xffff, 0, "IC Book Labs Gunboat x4 Lite", DEFAULT_RCLK, --- ./uart/uart_bus_pci.c.ORI 2018-02-12 06:17:57.000000000 +0100 +++ ./uart/uart_bus_pci.c 2018-03-06 06:23:20.886245000 +0100 @@ -158,6 +158,8 @@ "MosChip MCS9904 PCIe to Peripheral Controller", 0x10 }, { 0x9710, 0x9922, 0xa000, 0x1000, "MosChip MCS9922 PCIe to Peripheral Controller", 0x10 }, +{ 0x9710, 0x9912, 0xa000, 0x1000, + "MosChip MCS9912 PCIe to Peripheral Controller", 0x10 }, { 0xdeaf, 0x9051, 0xffff, 0, "Middle Digital PC Weasel Serial Port", 0x10 }, { 0xffff, 0, 0xffff, 0, NULL, 0, 0} }; -Andre
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180306072727.GA86364>