From owner-freebsd-drivers@FreeBSD.ORG Tue Dec 27 02:58:29 2011 Return-Path: Delivered-To: freebsd-drivers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 751EC106564A for ; Tue, 27 Dec 2011 02:58:29 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 1EC2F8FC18 for ; Tue, 27 Dec 2011 02:58:29 +0000 (UTC) Received: from 63.imp.bsdimp.com (63.imp.bsdimp.com [10.0.0.63]) (authenticated bits=0) by harmony.bsdimp.com (8.14.4/8.14.3) with ESMTP id pBR2t6Wm031937 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO); Mon, 26 Dec 2011 19:55:06 -0700 (MST) (envelope-from imp@bsdimp.com) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Warner Losh In-Reply-To: <20111226014313.218240@gmx.com> Date: Mon, 26 Dec 2011 19:55:06 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: <528929DF-FE2C-4A13-B67A-A6B22894607B@bsdimp.com> References: <20111226014313.218240@gmx.com> To: "Dieter BSD" X-Mailer: Apple Mail (2.1084) X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (harmony.bsdimp.com [10.0.0.6]); Mon, 26 Dec 2011 19:55:06 -0700 (MST) Cc: freebsd-drivers@freebsd.org Subject: Re: Attempting to add support for RS-232 card, need help X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Dec 2011 02:58:29 -0000 You may need to adjust the RCLK for this device. The rest looks = correct... Warner On Dec 25, 2011, at 6:43 PM, Dieter BSD wrote: > I am attempting to add support for a PCI RS-232 card. >=20 > http://www.newegg.com/Product/Product.aspx?Item=3DN82E16815124082 >=20 > "PCI two serial ports card with SystemBase Chipset SB16C1052PCI > Easy Plug & installation automatically selects IRQ and I/O address > Fully compliant with PCI Local Bus Specification Revision 2.3 > Supports PCI power management Supports PCI IRQ sharing > feature, saves valuable resources for other add-on cards Compatible > with industrial standard 16C550 UART On-chip" >=20 > FreeBSD 8.2 > amd64 >=20 > pciconf says: > none5@pci0:1:10:0: class=3D0x070002 card=3D0x4d0214a1 chip=3D0x4d0214a1 = rev=3D0xb0 hdr=3D0x00 > vendor =3D 'Systembase Co Ltd' > class =3D simple comms > subclass =3D UART > bar [10] =3D type I/O Port, range 32, base 0xa400, size 16, = enabled > bar [14] =3D type I/O Port, range 32, base 0xa000, size 64, = enabled > cap 01[40] =3D powerspec 3 supports D0 D3 current D0 >=20 > Adding the following to pucdata.c gets it partly working >=20 > { 0x14a1, /* vendor - card vendor ID */ > 0x4d02, /* device - card ID */ > 0x14a1, /* subvendor - card vendor ID */ > 0x4d02, /* subvendor - card ID */ > "Systembase Co Ltd", /* desc */ > DEFAULT_RCLK, /* clock */ > PUC_PORT_2S, /* number of ports */ > 0x10, /* rid - Rid of first port */ > 0, /* d_rid - Delta rid of next ports = */ > 8, /* d_ofs - Delta offset of next = ports */ > /* config_function */ > }, >=20 > port 0xa400-0xa40f,0xa000-0xa03f irq 17 at device = 10.0 on pci1 > puc0: DEBUG puc.c puc_get_bar(rid=3D16) Get an unused entry for us to = fill. > puc0: DEBUG puc.c puc_get_bar(rid=3D-1) found BAR entry > puc0: DEBUG puc.c puc_get_bar(rid=3D16) returning = bar=3D0xffffff0001c7b418 > puc0: DEBUG puc.c puc_get_bar(rid=3D16) found BAR entry > puc0: [FILTER] > uart2: DEBUG rx fifo count =3D 64 > uart2: DEBUG rx fifo count =3D 64 > <16750 or compatible> on puc0 > uart2: [FILTER] > uart3: DEBUG rx fifo count =3D 64 > uart3: DEBUG rx fifo count =3D 64 > <16750 or compatible> on puc0 > uart3: [FILTER] >=20 > devinfo says: > puc0 pnpinfo vendor=3D0x14a1 device=3D0x4d02 = subvendor=3D0x14a1 subdevice=3D0x4d02 class=3D0x070002 at slot=3D10 = function=3D0 > Interrupt request lines: > 17 > I/O ports: > 0xa400-0xa40f > uart2 > puc0 I/O port mapping: > 41984-41991 > puc0 port numbers: > 1 > uart3 > puc0 I/O port mapping: > 41992-41999 > puc0 port numbers: > 2 >=20 > cu to the port toggles RTS and DTR. And they go back when exiting cu. > But if I connect the port to another system (CTS on, CD off), then > cu hangs when exiting so I have to kill the process. Also, no data > is transmitted or received, not even garbled data from an incorrect > baud rate, the TD LED doesn't flicker. The fifo is supposed to be > 256 bytes but the kernel says 64 (see above debugging printf output). >=20 > The mainboard's 2 RS-232 ports work fine. >=20 > Is puc the correct driver for this card? > Do I need a config_function? > What does [FILTER] (in dmesg) mean? > _______________________________________________ > freebsd-drivers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-drivers > To unsubscribe, send any mail to = "freebsd-drivers-unsubscribe@freebsd.org" >=20 >=20