summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsl147100 <none@none>2006-07-06 05:57:45 -0700
committersl147100 <none@none>2006-07-06 05:57:45 -0700
commitfef1e07ef354c2dcda4dc397c33f5a5532432c7a (patch)
tree48b104d0e1d95517f4506685be24f63467f00354
parent0e995c33333aa22fefbb5edf7712b69135dcc2d3 (diff)
downloadillumos-gate-fef1e07ef354c2dcda4dc397c33f5a5532432c7a.tar.gz
6388141 Fix the CDDL block of usr/src/uts/intel/usbs49_fw/Makefile
6430189 Recovery mechanism fail to re-activate the USB port after the short circuit condition is cleared. 6440743 ohci should be able to handle clearing hub feature C_HUB_OVER_CURRENT 6443767 warlock usb is not clean due to changes made in 6426010
-rw-r--r--usr/src/uts/common/io/usb/clients/usbser/usbser.c6
-rw-r--r--usr/src/uts/common/io/usb/hcd/openhci/ohci_hub.c94
-rw-r--r--usr/src/uts/common/io/usb/hcd/uhci/uhcipolled.c8
-rw-r--r--usr/src/uts/common/io/usb/usba/hubdi.c139
-rw-r--r--usr/src/uts/common/sys/usb/hcd/openhci/ohci.h1
-rw-r--r--usr/src/uts/common/sys/usb/hubd/hub.h9
-rw-r--r--usr/src/uts/intel/usbs49_fw/Makefile24
-rw-r--r--usr/src/uts/sparc/hid/hid_with_usba.wlcmd10
-rw-r--r--usr/src/uts/sparc/scsa2usb/scsa2usb_with_usba.wlcmd5
-rw-r--r--usr/src/uts/sparc/ugen/ugen_with_usba.wlcmd12
-rw-r--r--usr/src/uts/sparc/uhci/uhci.wlcmd12
-rw-r--r--usr/src/uts/sparc/usb_ac/usb_ac_with_usba.wlcmd12
-rw-r--r--usr/src/uts/sparc/usb_as/usb_as_with_usba.wlcmd13
-rw-r--r--usr/src/uts/sparc/usb_mid/usb_mid_with_usba.wlcmd12
-rw-r--r--usr/src/uts/sparc/usbprn/usbprn_with_usba.wlcmd12
-rw-r--r--usr/src/uts/sparc/usbser/usbser.wlcmd15
-rw-r--r--usr/src/uts/sparc/usbskel/usbskel_with_usba.wlcmd12
-rw-r--r--usr/src/uts/sparc/usbsksp/usbser_keyspan.wlcmd15
-rw-r--r--usr/src/uts/sparc/usbsksp/usbser_keyspan_with_usba.wlcmd16
-rw-r--r--usr/src/uts/sparc/usbsprl/usbsprl.wlcmd15
-rw-r--r--usr/src/uts/sparc/usbsprl/usbsprl_with_usba.wlcmd16
21 files changed, 357 insertions, 101 deletions
diff --git a/usr/src/uts/common/io/usb/clients/usbser/usbser.c b/usr/src/uts/common/io/usb/clients/usbser/usbser.c
index bd53ea009f..3fb98ad919 100644
--- a/usr/src/uts/common/io/usb/clients/usbser/usbser.c
+++ b/usr/src/uts/common/io/usb/clients/usbser/usbser.c
@@ -159,6 +159,12 @@ static usb_console_info_t console_input, console_output;
static uchar_t *console_input_buf;
static uchar_t *console_input_start, *console_input_end;
+_NOTE(SCHEME_PROTECTS_DATA("unshared", usbser_console_abort))
+_NOTE(SCHEME_PROTECTS_DATA("unshared", console_input))
+_NOTE(SCHEME_PROTECTS_DATA("unshared", console_output))
+_NOTE(SCHEME_PROTECTS_DATA("unshared", console_input_start))
+_NOTE(SCHEME_PROTECTS_DATA("unshared", console_input_end))
+
static void usbser_putchar(cons_polledio_arg_t, uchar_t);
static int usbser_getchar(cons_polledio_arg_t);
static boolean_t usbser_ischar(cons_polledio_arg_t);
diff --git a/usr/src/uts/common/io/usb/hcd/openhci/ohci_hub.c b/usr/src/uts/common/io/usb/hcd/openhci/ohci_hub.c
index ba18fc1e2a..b7a7358b7f 100644
--- a/usr/src/uts/common/io/usb/hcd/openhci/ohci_hub.c
+++ b/usr/src/uts/common/io/usb/hcd/openhci/ohci_hub.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -75,6 +74,12 @@ static void ohci_handle_clrchng_port_over_current(
static void ohci_handle_get_port_status(
ohci_state_t *ohcip,
uint16_t port);
+static int ohci_handle_set_clear_hub_feature(
+ ohci_state_t *ohcip,
+ uchar_t bRequest,
+ uint16_t wValue);
+static void ohci_handle_clrchng_hub_over_current(
+ ohci_state_t *ohcip);
static void ohci_handle_get_hub_descriptor(
ohci_state_t *ohcip);
static void ohci_handle_get_hub_status(
@@ -586,6 +591,10 @@ ohci_handle_root_hub_request(
break;
}
break;
+ case HUB_HANDLE_HUB_FEATURE_TYPE:
+ error = ohci_handle_set_clear_hub_feature(ohcip,
+ bRequest, wValue);
+ break;
default:
USB_DPRINTF_L2(PRINT_MASK_ROOT_HUB, ohcip->ohci_log_hdl,
"ohci_handle_root_hub_request: "
@@ -1073,6 +1082,77 @@ ohci_handle_get_port_status(
/*
+ * ohci_handle_set_clear_hub_feature:
+ *
+ * OHCI only implements clearing C_HUB_OVER_CURRENT feature now.
+ * Other hub requests of this bmRequestType are either not
+ * supported by hardware or never used.
+ */
+static int
+ohci_handle_set_clear_hub_feature(
+ ohci_state_t *ohcip,
+ uchar_t bRequest,
+ uint16_t wValue)
+{
+ int error = USB_SUCCESS;
+
+ USB_DPRINTF_L4(PRINT_MASK_ROOT_HUB, ohcip->ohci_log_hdl,
+ "ohci_handle_set_clear_hub_feature: 0x%x 0x%x",
+ bRequest, wValue);
+
+ switch (bRequest) {
+ case USB_REQ_CLEAR_FEATURE:
+ if (wValue == CFS_C_HUB_OVER_CURRENT) {
+ ohci_handle_clrchng_hub_over_current(ohcip);
+ } else {
+ USB_DPRINTF_L2(PRINT_MASK_ROOT_HUB, ohcip->ohci_log_hdl,
+ "ohci_handle_set_clear_hub_feature: "
+ "Unsupported request 0x%x 0x%x", bRequest, wValue);
+
+ error = USB_FAILURE;
+ }
+ break;
+
+ case USB_REQ_SET_FEATURE:
+ default:
+ USB_DPRINTF_L2(PRINT_MASK_ROOT_HUB, ohcip->ohci_log_hdl,
+ "ohci_handle_set_clear_hub_feature: "
+ "Unsupported request 0x%x 0x%x", bRequest, wValue);
+
+ error = USB_FAILURE;
+ break;
+ }
+
+ return (error);
+}
+
+
+/*
+ * ohci_handle_clrchng_hub_over_current:
+ *
+ * Clear over current indicator change bit on the root hub.
+ */
+static void
+ohci_handle_clrchng_hub_over_current(
+ ohci_state_t *ohcip)
+{
+ uint_t hub_status;
+
+ mutex_enter(&ohcip->ohci_int_mutex);
+
+ hub_status = Get_OpReg(hcr_rh_status);
+
+ USB_DPRINTF_L4(PRINT_MASK_ROOT_HUB, ohcip->ohci_log_hdl,
+ "ohci_handle_clrchng_hub_over_current: "
+ "status = 0x%x", hub_status);
+
+ Set_OpReg(hcr_rh_status, HCR_RH_STATUS_OCIC);
+
+ mutex_exit(&ohcip->ohci_int_mutex);
+}
+
+
+/*
* ohci_handle_get_hub_descriptor:
*/
static void
@@ -1520,14 +1600,16 @@ ohci_handle_root_hub_status_change(void *arg)
new_root_hub_status = Get_OpReg(hcr_rh_status);
/* See if the root hub status has changed */
- if ((new_root_hub_status & HCR_RH_STATUS_MASK) !=
- ohcip->ohci_root_hub.rh_status) {
+ if (new_root_hub_status & HCR_RH_CHNG_MASK) {
USB_DPRINTF_L3(PRINT_MASK_ROOT_HUB, ohcip->ohci_log_hdl,
"ohci_handle_root_hub_status_change: "
"Root hub status has changed!");
all_ports_status = 1;
+
+ /* Update root hub status */
+ ohcip->ohci_root_hub.rh_status = new_root_hub_status;
}
/* Check each port */
diff --git a/usr/src/uts/common/io/usb/hcd/uhci/uhcipolled.c b/usr/src/uts/common/io/usb/hcd/uhci/uhcipolled.c
index 78816df9fd..df256da53c 100644
--- a/usr/src/uts/common/io/usb/hcd/uhci/uhcipolled.c
+++ b/usr/src/uts/common/io/usb/hcd/uhci/uhcipolled.c
@@ -398,6 +398,10 @@ uhci_hcdi_polled_write(usb_console_info_impl_t *info, uchar_t *buf,
uhci_pipe_private_t *pp;
usba_pipe_handle_data_t *ph;
+#ifndef lint
+ _NOTE(NO_COMPETING_THREADS_NOW);
+#endif
+
uhci_polledp = (uhci_polled_t *)info->uci_private;
uhcip = uhci_polledp->uhci_polled_uhcip;
ph = uhci_polledp->uhci_polled_ph;
@@ -461,6 +465,10 @@ uhci_hcdi_polled_write(usb_console_info_impl_t *info, uchar_t *buf,
HC_END_OF_LIST);
}
+#ifndef lint
+ _NOTE(COMPETING_THREADS_NOW);
+#endif
+
return (USB_SUCCESS);
}
diff --git a/usr/src/uts/common/io/usb/usba/hubdi.c b/usr/src/uts/common/io/usb/usba/hubdi.c
index 551ad462f4..71b0393f0e 100644
--- a/usr/src/uts/common/io/usb/usba/hubdi.c
+++ b/usr/src/uts/common/io/usb/usba/hubdi.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -3597,6 +3596,39 @@ hubd_hotplug_thread(void *arg)
}
}
}
+
+ /*
+ * Check if the port is over-current
+ */
+ if (change & PORT_CHANGE_OCIC) {
+ USB_DPRINTF_L1(DPRINT_MASK_HOTPLUG,
+ hubd->h_log_handle,
+ "Port%d in over current condition, "
+ "please check the attached device to "
+ "clear the condition. The system will "
+ "try to recover the port, but if not "
+ "successful, you need to re-connect "
+ "the hub or reboot the system to bring "
+ "the port back to work", port);
+
+ if (!(status & PORT_STATUS_PPS)) {
+ /*
+ * Try to enable port power, but
+ * possibly fail. Ignore failure
+ */
+ (void) hubd_enable_port_power(hubd,
+ port);
+
+ /*
+ * Delay some time to avoid
+ * over-current event to happen
+ * too frequently in some cases
+ */
+ mutex_exit(HUBD_MUTEX(hubd));
+ delay(drv_usectohz(500000));
+ mutex_enter(HUBD_MUTEX(hubd));
+ }
+ }
}
}
@@ -4000,8 +4032,10 @@ hubd_get_hub_status(hubd_t *hubd)
size_t cfg_length;
uchar_t *usb_cfg;
uint8_t MaxPower;
+ usb_hub_descr_t *hub_descr;
+ usb_port_t port;
- USB_DPRINTF_L4(DPRINT_MASK_PORT, hubd->h_log_handle,
+ USB_DPRINTF_L4(DPRINT_MASK_HOTPLUG, hubd->h_log_handle,
"hubd_get_hub_status:");
ASSERT(mutex_owned(HUBD_MUTEX(hubd)));
@@ -4024,7 +4058,7 @@ hubd_get_hub_status(hubd_t *hubd)
if (rval != USB_CFG_DESCR_SIZE) {
- USB_DPRINTF_L2(DPRINT_MASK_PORT, hubd->h_log_handle,
+ USB_DPRINTF_L2(DPRINT_MASK_HOTPLUG, hubd->h_log_handle,
"get hub configuration descriptor failed.");
mutex_enter(HUBD_MUTEX(hubd));
@@ -4051,7 +4085,7 @@ hubd_get_hub_status(hubd_t *hubd)
* not draw any power from USB bus.
* It can't work well on this condition.
*/
- USB_DPRINTF_L1(DPRINT_MASK_PORT,
+ USB_DPRINTF_L1(DPRINT_MASK_HOTPLUG,
hubd->h_log_handle,
"local power has been lost, "
"please disconnect hub");
@@ -4060,7 +4094,7 @@ hubd_get_hub_status(hubd_t *hubd)
/*
* Bus-powered only or self/bus-powered hub.
*/
- USB_DPRINTF_L1(DPRINT_MASK_PORT,
+ USB_DPRINTF_L1(DPRINT_MASK_HOTPLUG,
hubd->h_log_handle,
"local power has been lost,"
"the hub could draw %d"
@@ -4070,19 +4104,19 @@ hubd_get_hub_status(hubd_t *hubd)
}
- USB_DPRINTF_L3(DPRINT_MASK_PORT, hubd->h_log_handle,
+ USB_DPRINTF_L3(DPRINT_MASK_HOTPLUG, hubd->h_log_handle,
"clearing feature C_HUB_LOCAL_POWER ");
if ((rval = usb_pipe_sync_ctrl_xfer(hubd->h_dip,
hubd->h_default_pipe,
- USB_DEV_REQ_TYPE_CLASS,
+ HUB_HANDLE_HUB_FEATURE_TYPE,
USB_REQ_CLEAR_FEATURE,
CFS_C_HUB_LOCAL_POWER,
0,
0,
NULL, 0,
&completion_reason, &cb_flags, 0)) != USB_SUCCESS) {
- USB_DPRINTF_L2(DPRINT_MASK_PORT,
+ USB_DPRINTF_L2(DPRINT_MASK_HOTPLUG,
hubd->h_log_handle,
"clear feature C_HUB_LOCAL_POWER "
"failed (%d 0x%x %d)",
@@ -4094,34 +4128,97 @@ hubd_get_hub_status(hubd_t *hubd)
if (change & C_HUB_OVER_CURRENT) {
if (status & HUB_OVER_CURRENT) {
- /*
- * the user must offline this hub in order to recover.
- * the port power is automatically disabled, so we
- * won't see disconnects.
- */
- USB_DPRINTF_L0(DPRINT_MASK_PORT, hubd->h_log_handle,
- "global over current condition, "
- "please disconnect hub");
+
+ if (usba_is_root_hub(hubd->h_dip)) {
+ /*
+ * The root hub should be automatically
+ * recovered when over-current condition is
+ * cleared. But there might be exception and
+ * need user interaction to recover.
+ */
+ USB_DPRINTF_L0(DPRINT_MASK_HOTPLUG,
+ hubd->h_log_handle,
+ "Root hub over current condition, "
+ "please check your system to clear the "
+ "condition as soon as possible. And you "
+ "may need to reboot the system to bring "
+ "the root hub back to work if it cannot "
+ "recover automatically");
+ } else {
+ /*
+ * The driver would try to recover port power
+ * on over current condition. When the recovery
+ * fails, the user may still need to offline
+ * this hub in order to recover.
+ * The port power is automatically disabled,
+ * so we won't see disconnects.
+ */
+ USB_DPRINTF_L0(DPRINT_MASK_HOTPLUG,
+ hubd->h_log_handle,
+ "Hub global over current condition, "
+ "please disconnect the devices connected "
+ "to the hub to clear the condition. And "
+ "you may need to re-connect the hub if "
+ "the ports do not work");
+ }
}
- USB_DPRINTF_L3(DPRINT_MASK_PORT, hubd->h_log_handle,
+ USB_DPRINTF_L3(DPRINT_MASK_HOTPLUG, hubd->h_log_handle,
"clearing feature C_HUB_OVER_CURRENT");
if ((rval = usb_pipe_sync_ctrl_xfer(hubd->h_dip,
hubd->h_default_pipe,
- USB_DEV_REQ_TYPE_CLASS,
+ HUB_HANDLE_HUB_FEATURE_TYPE,
USB_REQ_CLEAR_FEATURE,
CFS_C_HUB_OVER_CURRENT,
0,
0,
NULL, 0,
&completion_reason, &cb_flags, 0)) != USB_SUCCESS) {
- USB_DPRINTF_L2(DPRINT_MASK_PORT,
+ USB_DPRINTF_L2(DPRINT_MASK_HOTPLUG,
hubd->h_log_handle,
"clear feature C_HUB_OVER_CURRENT "
"failed (%d 0x%x %d)",
rval, completion_reason, cb_flags);
}
+
+ /*
+ * Try to recover all port power if they are turned off.
+ * Don't do this for root hub, but rely on the root hub
+ * to recover itself.
+ */
+ if (!usba_is_root_hub(hubd->h_dip)) {
+
+ mutex_enter(HUBD_MUTEX(hubd));
+
+ /*
+ * Only check the power status of the 1st port
+ * since all port power status should be the same.
+ */
+ (void) hubd_determine_port_status(hubd, 1, &status,
+ &change, 0);
+
+ if (status & PORT_STATUS_PPS) {
+
+ return (USB_SUCCESS);
+ }
+
+ hub_descr = &hubd->h_hub_descr;
+
+ for (port = 1; port <= hub_descr->bNbrPorts;
+ port++) {
+
+ (void) hubd_enable_port_power(hubd, port);
+ }
+
+ mutex_exit(HUBD_MUTEX(hubd));
+
+ /*
+ * Delay some time to avoid over-current event
+ * to happen too frequently in some cases
+ */
+ delay(drv_usectohz(500000));
+ }
}
mutex_enter(HUBD_MUTEX(hubd));
diff --git a/usr/src/uts/common/sys/usb/hcd/openhci/ohci.h b/usr/src/uts/common/sys/usb/hcd/openhci/ohci.h
index e9acb47ed2..c05fcbde9f 100644
--- a/usr/src/uts/common/sys/usb/hcd/openhci/ohci.h
+++ b/usr/src/uts/common/sys/usb/hcd/openhci/ohci.h
@@ -236,6 +236,7 @@ typedef volatile struct ohci_regs {
#define HCR_RH_STATUS_OCIC 0x00020000 /* Over current indicator */
#define HCR_RH_STATUS_CRWE 0x80000000 /* Clear remote wakeup enable */
#define HCR_RH_STATUS_MASK 0x10038003 /* Status mask */
+#define HCR_RH_CHNG_MASK 0x00030000 /* Mask for change bits */
/* hcr_rh_portstatus bits */
#define HCR_PORT_CCS 0x00000001 /* Current connect status */
diff --git a/usr/src/uts/common/sys/usb/hubd/hub.h b/usr/src/uts/common/sys/usb/hubd/hub.h
index 4c0d6c005b..17962a64e3 100644
--- a/usr/src/uts/common/sys/usb/hubd/hub.h
+++ b/usr/src/uts/common/sys/usb/hubd/hub.h
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -93,6 +92,8 @@ typedef struct usb_hub_descr {
#define HUB_CLASS_REQ_TYPE (USB_DEV_REQ_DEV_TO_HOST \
|USB_DEV_REQ_TYPE_CLASS)
+#define HUB_HANDLE_HUB_FEATURE_TYPE USB_DEV_REQ_TYPE_CLASS
+
/* bmRequestType for getting device status */
#define HUB_GET_DEVICE_STATUS_TYPE (USB_DEV_REQ_DEV_TO_HOST \
|USB_DEV_REQ_TYPE_STANDARD \
diff --git a/usr/src/uts/intel/usbs49_fw/Makefile b/usr/src/uts/intel/usbs49_fw/Makefile
index b0757c96b7..64eadcc940 100644
--- a/usr/src/uts/intel/usbs49_fw/Makefile
+++ b/usr/src/uts/intel/usbs49_fw/Makefile
@@ -1,25 +1,8 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -34,8 +17,7 @@
#
# CDDL HEADER END
#
-#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#ident "%Z%%M% %I% %E% SMI"
diff --git a/usr/src/uts/sparc/hid/hid_with_usba.wlcmd b/usr/src/uts/sparc/hid/hid_with_usba.wlcmd
index 7c198912fe..07fcab631e 100644
--- a/usr/src/uts/sparc/hid/hid_with_usba.wlcmd
+++ b/usr/src/uts/sparc/hid/hid_with_usba.wlcmd
@@ -34,6 +34,11 @@ one usba_device
### specify the root functions
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_read
@@ -189,3 +194,8 @@ add usba_hcdi_ops::usba_hcdi_console_input_init targets \
ehci_hcdi_polled_input_init
add usba_hcdi_ops::usba_hcdi_console_input_fini targets \
ehci_hcdi_polled_input_fini
+
+add usba_hcdi_ops::usba_hcdi_console_input_init targets \
+ uhci_hcdi_polled_input_init
+add usba_hcdi_ops::usba_hcdi_console_input_fini targets \
+ uhci_hcdi_polled_input_fini
diff --git a/usr/src/uts/sparc/scsa2usb/scsa2usb_with_usba.wlcmd b/usr/src/uts/sparc/scsa2usb/scsa2usb_with_usba.wlcmd
index a91e4b1198..a6395b215e 100644
--- a/usr/src/uts/sparc/scsa2usb/scsa2usb_with_usba.wlcmd
+++ b/usr/src/uts/sparc/scsa2usb/scsa2usb_with_usba.wlcmd
@@ -36,6 +36,11 @@ one sd_resv_reclaim_request
### specify the root functions
root usba_ascii_string_descr
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
diff --git a/usr/src/uts/sparc/ugen/ugen_with_usba.wlcmd b/usr/src/uts/sparc/ugen/ugen_with_usba.wlcmd
index e5b7d4c828..bcca5504b9 100644
--- a/usr/src/uts/sparc/ugen/ugen_with_usba.wlcmd
+++ b/usr/src/uts/sparc/ugen/ugen_with_usba.wlcmd
@@ -2,9 +2,8 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -19,7 +18,7 @@
#
# CDDL HEADER END
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#ident "%Z%%M% %I% %E% SMI"
@@ -34,6 +33,11 @@ one usba_device
### specify the root functions
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_read
diff --git a/usr/src/uts/sparc/uhci/uhci.wlcmd b/usr/src/uts/sparc/uhci/uhci.wlcmd
index 1b52bfd409..ece559e66a 100644
--- a/usr/src/uts/sparc/uhci/uhci.wlcmd
+++ b/usr/src/uts/sparc/uhci/uhci.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -65,6 +64,11 @@ root uhci_hcdi_polled_input_fini
root uhci_hcdi_polled_input_enter
root uhci_hcdi_polled_input_exit
root uhci_hcdi_polled_read
+root uhci_hcdi_polled_output_init
+root uhci_hcdi_polled_output_fini
+root uhci_hcdi_polled_output_enter
+root uhci_hcdi_polled_output_exit
+root uhci_hcdi_polled_write
### currently unused functions
diff --git a/usr/src/uts/sparc/usb_ac/usb_ac_with_usba.wlcmd b/usr/src/uts/sparc/usb_ac/usb_ac_with_usba.wlcmd
index 7b9f601e4d..4b73a97ace 100644
--- a/usr/src/uts/sparc/usb_ac/usb_ac_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usb_ac/usb_ac_with_usba.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -34,6 +33,11 @@ one hubd
one usba_device
### specify the root functions
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
diff --git a/usr/src/uts/sparc/usb_as/usb_as_with_usba.wlcmd b/usr/src/uts/sparc/usb_as/usb_as_with_usba.wlcmd
index 7ce60bddc1..03650331a8 100644
--- a/usr/src/uts/sparc/usb_as/usb_as_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usb_as/usb_as_with_usba.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -31,7 +30,11 @@ one usb_as_state
### specify the root functions
-
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
diff --git a/usr/src/uts/sparc/usb_mid/usb_mid_with_usba.wlcmd b/usr/src/uts/sparc/usb_mid/usb_mid_with_usba.wlcmd
index 3f00b92ddb..81b5c8fbd7 100644
--- a/usr/src/uts/sparc/usb_mid/usb_mid_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usb_mid/usb_mid_with_usba.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -34,6 +33,11 @@ one usba_device
### specify the root functions
root usba_ascii_string_descr
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
diff --git a/usr/src/uts/sparc/usbprn/usbprn_with_usba.wlcmd b/usr/src/uts/sparc/usbprn/usbprn_with_usba.wlcmd
index 05bd30a4e8..a83a0b3e29 100644
--- a/usr/src/uts/sparc/usbprn/usbprn_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usbprn/usbprn_with_usba.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -31,6 +30,11 @@ one usbprn_state
### specify the root functions
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
diff --git a/usr/src/uts/sparc/usbser/usbser.wlcmd b/usr/src/uts/sparc/usbser/usbser.wlcmd
index a8944be2e9..5769e8365c 100644
--- a/usr/src/uts/sparc/usbser/usbser.wlcmd
+++ b/usr/src/uts/sparc/usbser/usbser.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -29,6 +28,12 @@ one usbser_state
### specify the root functions
+root usbser_first_device
+root usbser_putchar
+root usbser_getchar
+root usbser_ischar
+root usbser_polledio_enter
+root usbser_polledio_exit
root usbser_soft_state_size
root usbser_open
root usbser_close
@@ -72,6 +77,8 @@ add ds_ops::ds_stop targets warlock_dummy
add ds_ops::ds_start targets warlock_dummy
add ds_ops::ds_fifo_flush targets warlock_dummy
add ds_ops::ds_fifo_drain targets warlock_dummy
+add ds_ops::ds_out_pipe targets warlock_dummy
+add ds_ops::ds_in_pipe targets warlock_dummy
add rseq_step::s_func targets usbser_free_soft_state
add rseq_step::s_func targets usbser_init_soft_state
diff --git a/usr/src/uts/sparc/usbskel/usbskel_with_usba.wlcmd b/usr/src/uts/sparc/usbskel/usbskel_with_usba.wlcmd
index a807a4e911..a9d1f5632e 100644
--- a/usr/src/uts/sparc/usbskel/usbskel_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usbskel/usbskel_with_usba.wlcmd
@@ -1,13 +1,12 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -35,6 +34,11 @@ one usba_device
### specify the root functions
+root usb_console_output_init
+root usb_console_output_fini
+root usb_console_output_enter
+root usb_console_output_exit
+root usb_console_write
root usb_console_input_enter
root usb_console_input_exit
root usb_console_read
diff --git a/usr/src/uts/sparc/usbsksp/usbser_keyspan.wlcmd b/usr/src/uts/sparc/usbsksp/usbser_keyspan.wlcmd
index 9e8b5def09..695e365565 100644
--- a/usr/src/uts/sparc/usbsksp/usbser_keyspan.wlcmd
+++ b/usr/src/uts/sparc/usbsksp/usbser_keyspan.wlcmd
@@ -2,9 +2,8 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -21,7 +20,7 @@
#
#
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
@@ -34,6 +33,12 @@ one keyspan_port
### specify the root functions
+root usbser_first_device
+root usbser_putchar
+root usbser_getchar
+root usbser_ischar
+root usbser_polledio_enter
+root usbser_polledio_exit
root usbser_soft_state_size
root usbser_keyspan_open
root usbser_close
@@ -78,6 +83,8 @@ add ds_ops::ds_stop targets keyspan_stop
add ds_ops::ds_start targets keyspan_start
add ds_ops::ds_fifo_flush targets keyspan_fifo_flush
add ds_ops::ds_fifo_drain targets keyspan_fifo_drain
+add ds_ops::ds_out_pipe targets warlock_dummy
+add ds_ops::ds_in_pipe targets warlock_dummy
add keyspan_port::kp_cb.cb_tx targets usbser_tx_cb
add keyspan_port::kp_cb.cb_rx targets usbser_rx_cb
diff --git a/usr/src/uts/sparc/usbsksp/usbser_keyspan_with_usba.wlcmd b/usr/src/uts/sparc/usbsksp/usbser_keyspan_with_usba.wlcmd
index 24d6fc20a4..112b657387 100644
--- a/usr/src/uts/sparc/usbsksp/usbser_keyspan_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usbsksp/usbser_keyspan_with_usba.wlcmd
@@ -2,9 +2,8 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -21,7 +20,7 @@
#
#
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
@@ -37,6 +36,13 @@ one keyspan_port
### specify the root functions
+root usbser_first_device
+root usbser_putchar
+root usbser_getchar
+root usbser_ischar
+root usbser_polledio_enter
+root usbser_polledio_exit
+root usb_console_output_fini
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
@@ -185,6 +191,8 @@ add ds_ops::ds_stop targets keyspan_stop
add ds_ops::ds_start targets keyspan_start
add ds_ops::ds_fifo_flush targets keyspan_fifo_flush
add ds_ops::ds_fifo_drain targets keyspan_fifo_drain
+add ds_ops::ds_out_pipe targets warlock_dummy
+add ds_ops::ds_in_pipe targets warlock_dummy
add keyspan_port::kp_cb.cb_tx targets usbser_tx_cb
add keyspan_port::kp_cb.cb_rx targets usbser_rx_cb
diff --git a/usr/src/uts/sparc/usbsprl/usbsprl.wlcmd b/usr/src/uts/sparc/usbsprl/usbsprl.wlcmd
index 2088241cbe..a8e584397c 100644
--- a/usr/src/uts/sparc/usbsprl/usbsprl.wlcmd
+++ b/usr/src/uts/sparc/usbsprl/usbsprl.wlcmd
@@ -1,9 +1,8 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -18,7 +17,7 @@
#
# CDDL HEADER END
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#pragma ident "%Z%%M% %I% %E% SMI"
@@ -28,6 +27,12 @@ one pl2303_state
### specify the root functions
+root usbser_first_device
+root usbser_putchar
+root usbser_getchar
+root usbser_ischar
+root usbser_polledio_enter
+root usbser_polledio_exit
root usbser_soft_state_size
root usbser_pl2303_open
root usbser_close
@@ -70,6 +75,8 @@ add ds_ops::ds_stop targets pl2303_stop
add ds_ops::ds_start targets pl2303_start
add ds_ops::ds_fifo_flush targets pl2303_fifo_flush
add ds_ops::ds_fifo_drain targets pl2303_fifo_drain
+add ds_ops::ds_out_pipe targets pl2303_out_pipe
+add ds_ops::ds_in_pipe targets pl2303_in_pipe
add pl2303_state::pl_cb.cb_tx targets usbser_tx_cb
add pl2303_state::pl_cb.cb_rx targets usbser_rx_cb
diff --git a/usr/src/uts/sparc/usbsprl/usbsprl_with_usba.wlcmd b/usr/src/uts/sparc/usbsprl/usbsprl_with_usba.wlcmd
index 393e25032d..35a1af6283 100644
--- a/usr/src/uts/sparc/usbsprl/usbsprl_with_usba.wlcmd
+++ b/usr/src/uts/sparc/usbsprl/usbsprl_with_usba.wlcmd
@@ -1,9 +1,8 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License"). You may not use this file except in compliance
-# with the License.
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
@@ -18,7 +17,7 @@
#
# CDDL HEADER END
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#pragma ident "%Z%%M% %I% %E% SMI"
@@ -31,6 +30,13 @@ one pl2303_state
### specify the root functions
+root usbser_first_device
+root usbser_putchar
+root usbser_getchar
+root usbser_ischar
+root usbser_polledio_enter
+root usbser_polledio_exit
+root usb_console_output_fini
root usb_console_input_enter
root usb_console_input_exit
root usb_console_input_fini
@@ -177,6 +183,8 @@ add ds_ops::ds_stop targets pl2303_stop
add ds_ops::ds_start targets pl2303_start
add ds_ops::ds_fifo_flush targets pl2303_fifo_flush
add ds_ops::ds_fifo_drain targets pl2303_fifo_drain
+add ds_ops::ds_out_pipe targets pl2303_out_pipe
+add ds_ops::ds_in_pipe targets pl2303_in_pipe
add pl2303_state::pl_cb.cb_tx targets usbser_tx_cb
add pl2303_state::pl_cb.cb_rx targets usbser_rx_cb