Module Name:    src
Committed By:   ryo
Date:           Sat May 28 10:48:51 UTC 2011

Modified Files:
        src/sys/dev/pci: puc.c pucdata.c

Log Message:
Add support for SYSTEMBASE SB16C105x 4-port/8-port serial PCI cards.

- Added initialize code for SB16C105x to puc.c, but
  It is better to add a member (*config_function)() to
  struct puc_device_description and use it
- It seems SB16C1054 *rev 0x91* has different BAR layout, but not supported yet.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/dev/pci/puc.c
cvs rdiff -u -r1.74 -r1.75 src/sys/dev/pci/pucdata.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/puc.c
diff -u src/sys/dev/pci/puc.c:1.31 src/sys/dev/pci/puc.c:1.32
--- src/sys/dev/pci/puc.c:1.31	Wed Jul  9 14:46:15 2008
+++ src/sys/dev/pci/puc.c	Sat May 28 10:48:50 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: puc.c,v 1.31 2008/07/09 14:46:15 joerg Exp $	*/
+/*	$NetBSD: puc.c,v 1.32 2011/05/28 10:48:50 ryo Exp $	*/
 
 /*
  * Copyright (c) 1996, 1998, 1999
@@ -53,7 +53,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puc.c,v 1.31 2008/07/09 14:46:15 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puc.c,v 1.32 2011/05/28 10:48:50 ryo Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -62,6 +62,7 @@
 #include <dev/pci/pcireg.h>
 #include <dev/pci/pcivar.h>
 #include <dev/pci/pucvar.h>
+#include <dev/pci/pcidevs.h>
 #include <sys/termios.h>
 #include <dev/ic/comreg.h>
 #include <dev/ic/comvar.h>
@@ -245,6 +246,21 @@
 	 * XXX It's not pretty, but hey, what is?
 	 */
 
+	/* SB16C10xx board specific initialization */
+	if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_SYSTEMBASE &&
+	    (PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_SYSTEMBASE_SB16C1054 ||
+	    PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_SYSTEMBASE_SB16C1058)) {
+		if (!sc->sc_bar_mappings[1].mapped) {
+			aprint_error_dev(self,
+			    "optional register is not mapped\n");
+			return;
+		}
+#define SB16C105X_OPT_IMRREG0 0x0000000c
+		/* enable port 0-7 interrupt */
+		bus_space_write_1(sc->sc_bar_mappings[1].t,
+		    sc->sc_bar_mappings[1].h, SB16C105X_OPT_IMRREG0, 0xff);
+	}
+
 	/* Configure each port. */
 	for (i = 0; PUC_PORT_VALID(sc->sc_desc, i); i++) {
 		bus_space_handle_t subregion_handle;

Index: src/sys/dev/pci/pucdata.c
diff -u src/sys/dev/pci/pucdata.c:1.74 src/sys/dev/pci/pucdata.c:1.75
--- src/sys/dev/pci/pucdata.c:1.74	Sat May 14 22:07:38 2011
+++ src/sys/dev/pci/pucdata.c	Sat May 28 10:48:51 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: pucdata.c,v 1.74 2011/05/14 22:07:38 martin Exp $	*/
+/*	$NetBSD: pucdata.c,v 1.75 2011/05/28 10:48:51 ryo Exp $	*/
 
 /*
  * Copyright (c) 1998, 1999 Christopher G. Demetriou.  All rights reserved.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pucdata.c,v 1.74 2011/05/14 22:07:38 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pucdata.c,v 1.75 2011/05/28 10:48:51 ryo Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2109,6 +2109,34 @@
 	    },
 	},
 
+	/* SystemBase SB16C1054 UARTs */
+	{   "SystemBase SB16C1054",
+	    {	PCI_VENDOR_SYSTEMBASE, PCI_PRODUCT_SYSTEMBASE_SB16C1054, 0, 0 },
+	    {	0xffff,	0xffff,						 0, 0 },
+	    {
+		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
+	    },
+	},
+
+	/* SystemBase SB16C1058 UARTs */
+	{   "SystemBase SB16C1058",
+	    {   PCI_VENDOR_SYSTEMBASE, PCI_PRODUCT_SYSTEMBASE_SB16C1058, 0, 0 },
+	    {	0xffff,	0xffff,						 0, 0 },
+	    {
+		{ PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x20, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x28, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x30, COM_FREQ },
+		{ PUC_PORT_TYPE_COM, 0x10, 0x38, COM_FREQ },
+	    },
+	},
+
 	/*
 	 * VScom PCI 010L
 	 * one lpt

Reply via email to