From owner-FreeBSD-users-jp@jp.FreeBSD.org Sun Oct 12 20:26:12 2003
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id h9CBQCE79718;
	Sun, 12 Oct 2003 20:26:12 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from mail503.nifty.com (mail503.nifty.com [202.248.37.211])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id h9CBQBJ79713
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Sun, 12 Oct 2003 20:26:11 +0900 (JST)
	(envelope-from CQG00620@nifty.ne.jp)
Received: from nifty.ne.jp (mcda014n031.ppp.infoweb.ne.jp [61.124.80.158])by mail503.nifty.com with ESMTP id h9CBQ4kn001481
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Sun, 12 Oct 2003 20:26:05 +0900
Message-Id: <200310121126.h9CBQ4kn001481@mail503.nifty.com>
From: Watanabe Kazuhiro <CQG00620@nifty.ne.jp>
To: FreeBSD-users-jp@jp.FreeBSD.org
User-Agent: Wanderlust/2.10.0 (Venus) SEMI/1.14.4 (Hosorogi) FLIM/1.14.4
 (=?ISO-8859-4?Q?Kashiharajing=FE-mae?=) APEL/10.3 Emacs/21.2
 (i386--freebsd) MULE/5.0 (SAKAKI)
MIME-Version: 1.0 (generated by SEMI 1.14.4 - "Hosorogi")
Content-Type: text/plain; charset=ISO-2022-JP
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Sun, 12 Oct 2003 20:26:27 +0900
X-Sequence: FreeBSD-users-jp 76820
Subject: [FreeBSD-users-jp 76820] =?ISO-2022-JP?B?GyRCRjA6bkpzOXAbKEI=?=:
 Contec COM-2(PCI) (PCI serial
 board) with puc(4) driver
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: CQG00620@nifty.ne.jp
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+031012

$BEOJU0l42$H?=$7$^$9!#(B

Contec$B@=(BPCI$B%7%j%"%k%$%s%?!<%U%'!<%9%\!<%I$N(BCOM-2(PCI)$B$,!"(Bpuc$B%I%i%$%P$G(B
$BF0:n$7$?$N$GJs9p$7$^$9!#(B


Contec$B$O<+<R@=IJ8~$1$K(BLinux$BMQ%G%P%$%9%I%i%$%P$r8x3+$7$F$$$^$9$,!"(B
$B%7%j%"%k%\!<%I$K4X$7$F$O!"(BGPL$B$G%=!<%9%3!<%I$b8x3+$7$F$$$^$9!#(B

http://www.contec.co.jp/comm/info010122.htm#comdrv

$B$3$N%=!<%9$r;29M$K!"(Bpuc$B%I%i%$%P$K(BCOM-2(PCI)$B$N%(%s%H%j$H<c43$N=i4|2=%3!<(B
$B%I$r$M$89~$s$@$H$3$m!"(BFreeBSD 4.7-RELEASE$B$GF0:n$5$;$k$3$H$,$G$-$^$7$?!#(B
$BG'<1%a%C%;!<%8$O$3$s$J46$8$G$9(B($BCm(B:sio[01]$B$O%*%s%\!<%I%7%j%"%k(B)$B!#(B

puc0: <Contec COM-2(PCI)H/COM-2(PCI)> port 0xd000-0xd01f irq 9 at device 14.0 on pci0
sio2: type 16550A
sio3: type 16550A


Linux$BMQ%I%i%$%P$O!"(BLinux$B$NDL>o$N%7%j%"%k%I%i%$%P$r4p$K$7$?!"(BContec$B@=IJ(B
$BHFMQ(B(PCI, CardBus, PC-Card)$B$N$b$N$G$9!#$7$+$7(BContec$B@=%\!<%IFCM-$N=hM}(B
$B$H$7$F$O!"(BFIFO$B%P%C%U%!$NM-L5$H%5%$%:$r%7%j%"%k%I%i%$%P$K@_Dj$7$F!"$5$i(B
$B$KFf$NCM(B(^^;$B$r(Boutb()$B$7$F$$$kDxEY$G$9!#(B

$BA0=R$N!V<c43$N=i4|2=%3!<%I!W$H$O!"$3$N(Boutb()$B$7$F$$$kItJ,$r(B
bus_space_write1()$B$KCV$-49$($?$b$N$G$9!#0l1~!"(BLinux$BMQ%I%i%$%P$HF1MM$K(B
$B%\!<%I$N<oN`$rH=JL$9$k$h$&$K$7$?$N$G!"(Bpucdata.c$B$K%(%s%H%j$5$(DI2C$9$l(B
$B$P!"B>$N(BContec$B@=(BPCI$B%7%j%"%k%\!<%I$bF0:n$9$k2DG=@-$,$"$j$^$9!#(B


$B$J$*8=;~E@$G$O!"<!$N$h$&$JLdBj$,$"$j$^$9!#(B

(1)FIFO$B%P%C%U%!(B64KB$B$N%\!<%I$G$b!"(B16KB$B$H$_$J$7$F$7$^$&!#(B

(2)$B%G%P%$%9%U%!%$%k$H%]!<%H$N4XO"$E$1$,$G$-$J$$!#(BLinux$BMQ%I%i%$%P$G$O(B
   $B%\!<%I$N<oN`$H!"%\!<%I>e$N%m!<%?%j!<%9%$%C%A$N(BID$BHV9f$+$i!"%G%P%$%9(B
   $B%U%!%$%k$H%]!<%H$N4XO"$E$1$K5,B'$r;}$?$;$F$$$k$,!"$=$l$,L5$$!#(B
   ($BNc$($P(BID$B$r(B0$B$K$7$?(BCOM-2(PCI)$B$NBh(B1$B%]!<%H$OI,$:(B /dev/ttyCom2Pci0
   $B$G$"$k!"$H$$$C$?$3$H!#(B)


$B0J2<$O%Q%C%A$G$9!#(B4.7-RELEASE$B$G:n@.$7$?$N$G!"B>$N%j%j!<%9$G$OE,Ev$KD4(B
$B@0$9$kI,MW$,$"$k$+$bCN$l$^$;$s!#$^$?(B5.x$B7O$G$O(Bpuc$B%I%i%$%P$K$+$J$jJQ99$,(B
$BF~$C$F$$$k$h$&$J$N$G!"F1$8$h$&$K=$@5$7$F$bF0$/$+$I$&$+$o$+$j$^$;$s!#(B

# $B=i4|2=%3!<%I$OF~$l0W$/$J$C$?$h$&$G$9$,(B > 5.x


--- /sys/dev/puc/puc.c.orig	Tue Apr 30 01:59:48 2002
+++ /sys/dev/puc/puc.c	Sun Oct 12 19:19:59 2003
@@ -144,6 +144,7 @@
     uint32_t, uint32_t, uint32_t);
 static void puc_config_superio(device_t);
 static void puc_config_win877(struct resource *);
+static void puc_config_contec(struct resource *, uint32_t, u_char);
 static int puc_find_free_unit(char *);
 #ifdef PUC_DEBUG
 static void puc_print_win877(bus_space_tag_t, bus_space_handle_t, u_int,
@@ -393,6 +394,10 @@
 	if (sc->sc_desc->rval[PUC_REG_VEND] == 0x1592 &&
 	    sc->sc_desc->rval[PUC_REG_PROD] == 0x0781)
 		puc_config_win877(sc->sc_bar_mappings[0].res);
+	else if (sc->sc_desc->rval[PUC_REG_VEND] == 0x1221)
+		puc_config_contec(sc->sc_bar_mappings[0].res,
+                                  sc->sc_desc->rval[PUC_REG_PROD],
+                                  pci_read_config(dev, CONTEC_SIO_BOARD_REVISION, 1));
 }
 
 #define rdspio(indx)		(bus_space_write_1(bst, bsh, efir, indx), \
@@ -514,6 +519,28 @@
 
 #undef rdspio
 #undef wrspio
+
+static void
+puc_config_contec(struct resource *res, uint32_t prod, u_char rev)
+{
+	u_int t;
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+
+	bst = rman_get_bustag(res);
+	bsh = rman_get_bushandle(res);
+
+	if (rev == 1)
+		t = 0x83;
+	else {
+		if (prod == 0x8141)
+			t = 0x83;
+		else
+			t = 0x81;
+	}
+
+	bus_space_write_1(bst, bsh, CONTEC_SIO_OFFSET_IVR, t);
+}
 
 static int puc_find_free_unit(char *name)
 {
--- /sys/dev/puc/pucdata.c.orig	Thu Aug 22 19:50:58 2002
+++ /sys/dev/puc/pucdata.c	Sun Oct 12 19:19:59 2003
@@ -919,5 +919,15 @@
 	    },
 	},
 
+	/* Contec */
+	{   "Contec COM-2(PCI)H/COM-2(PCI)",
+	    {	0x1221,	0x8131,	0,	0	},
+	    {	0xffff,	0xffff,	0,	0	},
+	    {
+		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ * 2},
+		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ * 2},
+	    },
+	},
+
 	{ 0 }
 };
--- /sys/dev/puc/pucvar.h.orig	Tue Jun 18 11:50:05 2002
+++ /sys/dev/puc/pucvar.h	Sun Oct 12 19:19:59 2003
@@ -93,6 +93,10 @@
 
 #define PUC_MAX_BAR		6
 
+/* for Contec serial board */
+#define CONTEC_SIO_OFFSET_IVR		0x1F
+#define CONTEC_SIO_BOARD_REVISION	0x40
+
 enum puc_device_ivars {
 	PUC_IVAR_FREQ
 };

---
Watanabe Kazuhiro (CQG00620@nifty.ne.jp)
