? sys/arch/arm/feroceon
? sys/arch/evbarm/kuroboxarm
? sys/arch/evbarm/compile/KUROBOXARM
? sys/arch/evbarm/conf/KUROBOXARM
? sys/arch/evbarm/conf/files.kuroboxarm
? sys/arch/evbarm/conf/mk.kuroboxarm
? sys/arch/evbarm/conf/std.kuroboxarm
Index: sys/dev/pci/pcidevs
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pcidevs,v
retrieving revision 1.926
diff -u -r1.926 pcidevs
--- sys/dev/pci/pcidevs	11 Jan 2008 20:47:21 -0000	1.926
+++ sys/dev/pci/pcidevs	27 Jan 2008 06:12:47 -0000
@@ -1890,8 +1890,13 @@
 product MARVELL 88SX5041	0x5041	88SX5041 SATA
 product MARVELL 88SX5080	0x5080	88SX5080 SATA
 product MARVELL 88SX5081	0x5081	88SX5081 SATA
+product MARVELL 88F5082		0x5082	88F5082 SoC Orion1
+product MARVELL 88F5181		0x5181	88F5181 SoC Orion1
+product MARVELL 88F5182		0x5182	88F5182 SoC Orion1
+product MARVELL 88F5281		0x5281	88F5281 SoC Orion2
 product MARVELL 88SX6041	0x6041	88SX6041 SATA
-product MARVELL 88SX6081	0x6081	88SX6041 SATA
+product MARVELL 88SX6042	0x6042	88SX6042 SATA
+product MARVELL 88SX6081	0x6081	88SX6081 SATA
 product MARVELL 88SE6101	0x6101	88SE6101 single-port PATA133 Controller
 product MARVELL 88SE6121	0x6121	88SE6121 SATA II Controller
 product MARVELL 88SE614X	0x6141	88SE614X SATA II PCI-E Controller
@@ -1899,6 +1904,8 @@
 product MARVELL	GT64130		0x6320	GT-64130 System Controller
 product MARVELL	GT64260		0x6430	GT-64260 System Controller
 product MARVELL	GT64360		0x6460	MV6436x System Controller
+product MARVELL 88SX7042	0x7042	88SX7042 SATA
+product MARVELL 88W8660		0x8660	88W8660 SoC Orion1
 
 /* Global Sun Tech products */
 product GLOBALSUN GL24110P	0x1101	GL24110P PCI IEEE 802.11b
Index: sys/dev/pci/pcidevs.h
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pcidevs.h,v
retrieving revision 1.927
diff -u -r1.927 pcidevs.h
--- sys/dev/pci/pcidevs.h	11 Jan 2008 20:49:14 -0000	1.927
+++ sys/dev/pci/pcidevs.h	27 Jan 2008 06:12:49 -0000
@@ -1,4 +1,4 @@
-/*	$NetBSD: pcidevs.h,v 1.927 2008/01/11 20:49:14 tnn Exp $	*/
+/*	$NetBSD$	*/
 
 /*
  * THIS FILE AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -1897,8 +1897,13 @@
 #define	PCI_PRODUCT_MARVELL_88SX5041	0x5041		/* 88SX5041 SATA */
 #define	PCI_PRODUCT_MARVELL_88SX5080	0x5080		/* 88SX5080 SATA */
 #define	PCI_PRODUCT_MARVELL_88SX5081	0x5081		/* 88SX5081 SATA */
+#define	PCI_PRODUCT_MARVELL_88F5082	0x5082		/* 88F5082 SoC Orion1 */
+#define	PCI_PRODUCT_MARVELL_88F5181	0x5181		/* 88F5181 SoC Orion1 */
+#define	PCI_PRODUCT_MARVELL_88F5182	0x5182		/* 88F5182 SoC Orion1 */
+#define	PCI_PRODUCT_MARVELL_88F5281	0x5281		/* 88F5281 SoC Orion2 */
 #define	PCI_PRODUCT_MARVELL_88SX6041	0x6041		/* 88SX6041 SATA */
-#define	PCI_PRODUCT_MARVELL_88SX6081	0x6081		/* 88SX6041 SATA */
+#define	PCI_PRODUCT_MARVELL_88SX6042	0x6042		/* 88SX6042 SATA */
+#define	PCI_PRODUCT_MARVELL_88SX6081	0x6081		/* 88SX6081 SATA */
 #define	PCI_PRODUCT_MARVELL_88SE6101	0x6101		/* 88SE6101 single-port PATA133 Controller */
 #define	PCI_PRODUCT_MARVELL_88SE6121	0x6121		/* 88SE6121 SATA II Controller */
 #define	PCI_PRODUCT_MARVELL_88SE614X	0x6141		/* 88SE614X SATA II PCI-E Controller */
@@ -1906,6 +1911,8 @@
 #define	PCI_PRODUCT_MARVELL_GT64130	0x6320		/* GT-64130 System Controller */
 #define	PCI_PRODUCT_MARVELL_GT64260	0x6430		/* GT-64260 System Controller */
 #define	PCI_PRODUCT_MARVELL_GT64360	0x6460		/* MV6436x System Controller */
+#define	PCI_PRODUCT_MARVELL_88SX7042	0x7042		/* 88SX7042 SATA */
+#define	PCI_PRODUCT_MARVELL_88W8660	0x8660		/* 88W8660 SoC Orion1 */
 
 /* Global Sun Tech products */
 #define	PCI_PRODUCT_GLOBALSUN_GL24110P	0x1101		/* GL24110P PCI IEEE 802.11b */
Index: sys/dev/pci/pcidevs_data.h
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/pcidevs_data.h,v
retrieving revision 1.926
diff -u -r1.926 pcidevs_data.h
--- sys/dev/pci/pcidevs_data.h	11 Jan 2008 20:49:14 -0000	1.926
+++ sys/dev/pci/pcidevs_data.h	27 Jan 2008 06:12:52 -0000
@@ -1,4 +1,4 @@
-/*	$NetBSD: pcidevs_data.h,v 1.926 2008/01/11 20:49:14 tnn Exp $	*/
+/*	$NetBSD$	*/
 
 /*
  * THIS FILE AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -6572,12 +6572,32 @@
 	    "88SX5081 SATA",
 	},
 	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88F5082,
+	    "88F5082 SoC Orion1",
+	},
+	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88F5181,
+	    "88F5181 SoC Orion1",
+	},
+	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88F5182,
+	    "88F5182 SoC Orion1",
+	},
+	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88F5281,
+	    "88F5281 SoC Orion2",
+	},
+	{
 	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88SX6041,
 	    "88SX6041 SATA",
 	},
 	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88SX6042,
+	    "88SX6042 SATA",
+	},
+	{
 	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88SX6081,
-	    "88SX6041 SATA",
+	    "88SX6081 SATA",
 	},
 	{
 	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88SE6101,
@@ -6608,6 +6628,14 @@
 	    "MV6436x System Controller",
 	},
 	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88SX7042,
+	    "88SX7042 SATA",
+	},
+	{
+	    PCI_VENDOR_MARVELL, PCI_PRODUCT_MARVELL_88W8660,
+	    "88W8660 SoC Orion1",
+	},
+	{
 	    PCI_VENDOR_GLOBALSUN, PCI_PRODUCT_GLOBALSUN_GL24110P,
 	    "GL24110P PCI IEEE 802.11b",
 	},
@@ -13976,4 +14004,4 @@
 	    "Video Controller",
 	},
 };
-const int pci_nproducts = 2895;
+const int pci_nproducts = 2902;
Index: sys/dev/usb/ehci.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/ehci.c,v
retrieving revision 1.127
diff -u -r1.127 ehci.c
--- sys/dev/usb/ehci.c	9 Dec 2007 20:28:23 -0000	1.127
+++ sys/dev/usb/ehci.c	27 Jan 2008 06:12:53 -0000
@@ -320,7 +320,7 @@
 usbd_status
 ehci_init(ehci_softc_t *sc)
 {
-	u_int32_t vers, sparams, cparams, hcr;
+	u_int32_t vers, sparams, cparams, hcr, mode;
 	u_int i;
 	usbd_status err;
 	ehci_soft_qh_t *sqh;
@@ -392,6 +392,15 @@
 		    USBDEVNAME(sc->sc_bus.bdev));
 		return (USBD_IOERROR);
 	}
+	if (sc->sc_flags & EHCIF_HAVE_TT) {
+		/* put TDI/ARC silicon into EHCI mode */
+		mode = EOREAD4(sc, EHCI_USBMODE);
+		mode &= ~EHCI_MODE_HDMASK;	/* Host/Device Mask */
+		mode |= EHCI_MODE_HOST;
+		if (sc->sc_flags & EHCIF_NO_STREAM)
+			mode |= EHCI_MODE_STRMDIS;
+		EOWRITE4(sc, EHCI_USBMODE, mode);
+	}
 
 	/* XXX need proper intr scheduling */
 	sc->sc_rand = 96;
@@ -496,7 +505,8 @@
 
 	/* Turn on controller */
 	EOWRITE4(sc, EHCI_USBCMD,
-		 EHCI_CMD_ITC_2 | /* 2 microframes interrupt delay */
+	 			/* 2 microframes interrupt delay, if no TT */
+		 ((sc->sc_flags & EHCIF_HAVE_TT) ? 0 : EHCI_CMD_ITC_2) |
 		 (EOREAD4(sc, EHCI_USBCMD) & EHCI_CMD_FLS_M) |
 		 EHCI_CMD_ASE |
 		 EHCI_CMD_PSE |
@@ -1948,8 +1958,23 @@
 		v = EOREAD4(sc, EHCI_PORTSC(index));
 		DPRINTFN(8,("ehci_root_ctrl_start: port status=0x%04x\n",
 			    v));
-		i = UPS_HIGH_SPEED;
-		if (v & EHCI_PS_CS)	i |= UPS_CURRENT_CONNECT_STATUS;
+		i = 0;
+		if (v & EHCI_PS_CS) {
+		 	if (sc->sc_flags & EHCIF_HAVE_TT)
+				switch ((v >> 26) & 0x3) {
+				case 0:
+					break;
+				case 1:
+					i |= UPS_LOW_SPEED;
+					break;
+				case 2:
+				default:
+					i |= UPS_HIGH_SPEED;
+				}
+			else
+				i |= UPS_HIGH_SPEED;
+			i |= UPS_CURRENT_CONNECT_STATUS;
+		}
 		if (v & EHCI_PS_PE)	i |= UPS_PORT_ENABLED;
 		if (v & EHCI_PS_SUSP)	i |= UPS_SUSPEND;
 		if (v & EHCI_PS_OCA)	i |= UPS_OVERCURRENT_INDICATOR;
@@ -2005,7 +2030,8 @@
 				goto ret;
 			}
 			/* Terminate reset sequence. */
-			EOWRITE4(sc, port, v);
+			v = EOREAD4(sc, port);
+			EOWRITE4(sc, port, v & ~EHCI_PS_PR);
 			/* Wait for HC to complete reset. */
 			usb_delay_ms(&sc->sc_bus, EHCI_PORT_RESET_COMPLETE);
 			if (sc->sc_dying) {
@@ -2019,7 +2045,8 @@
 				       USBDEVNAME(sc->sc_bus.bdev));
 				return (USBD_TIMEOUT);
 			}
-			if (!(v & EHCI_PS_PE)) {
+			if (!(v & EHCI_PS_PE) &&
+			    !(sc->sc_flags & EHCIF_HAVE_TT)) {
 				/* Not a high speed device, give up ownership.*/
 				ehci_disown(sc, index, 0);
 				break;
Index: sys/dev/usb/ehcireg.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/ehcireg.h,v
retrieving revision 1.25
diff -u -r1.25 ehcireg.h
--- sys/dev/usb/ehcireg.h	9 Oct 2006 11:38:54 -0000	1.25
+++ sys/dev/usb/ehcireg.h	27 Jan 2008 06:12:53 -0000
@@ -171,6 +171,12 @@
 #define  EHCI_PS_CS		0x00000001 /* RO connect status */
 #define  EHCI_PS_CLEAR		(EHCI_PS_OCC|EHCI_PS_PEC|EHCI_PS_CSC)
 
+#define EHCI_USBMODE		0x68
+#define  EHCI_MODE_HDMASK	0x00000003 /* RW host/device Mask */
+#define  EHCI_MODE_HOST		0x00000003 /* RW mode host */
+#define  EHCI_MODE_DEVICE	0x00000002 /* RW mode device */
+#define  EHCI_MODE_STRMDIS	0x00000010 /* RW straming disable */
+
 #define EHCI_PORT_RESET_COMPLETE 2 /* ms */
 
 #define EHCI_FLALIGN_ALIGN	0x1000
Index: sys/dev/usb/ehcivar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/ehcivar.h,v
retrieving revision 1.26
diff -u -r1.26 ehcivar.h
--- sys/dev/usb/ehcivar.h	9 Dec 2007 20:28:23 -0000	1.26
+++ sys/dev/usb/ehcivar.h	27 Jan 2008 06:12:53 -0000
@@ -92,6 +92,8 @@
 	u_int sc_offs;			/* offset to operational regs */
 	int sc_flags;			/* misc flags */
 #define EHCIF_DROPPED_INTR_WORKAROUND	0x01
+#define EHCIF_HAVE_TT			0x02	/* Transaction Translator */
+#define EHCIF_NO_STREAM			0x04
 
 	char sc_vendor[32];		/* vendor string for root hub */
 	int sc_id_vendor;		/* vendor ID for root hub */
Index: sys/dev/usb/uhub.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/uhub.c,v
retrieving revision 1.93
diff -u -r1.93 uhub.c
--- sys/dev/usb/uhub.c	4 Jan 2008 03:56:47 -0000	1.93
+++ sys/dev/usb/uhub.c	27 Jan 2008 06:12:54 -0000
@@ -509,6 +509,14 @@
 #endif
 			continue;
 		}
+		if (!(status & UPS_PORT_ENABLED)) {
+			/* Not allowed send/receive packet. */
+#ifdef DIAGNOSTIC
+			printf("%s: port %d, device not enable\n",
+			       USBDEVNAME(sc->sc_dev), port);
+#endif
+			continue;
+		}
 
 		/* Figure out device speed */
 		if (status & UPS_HIGH_SPEED)
