`US007627708B2
`
`c12) United States Patent
`Bohm et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 7,627,708 B2
`*Dec. 1, 2009
`
`(54) MULTI-HOST USB DEVICE
`
`FOREIGN PATENT DOCUMENTS
`
`(75)
`
`Inventors: Mark R. Bohm, Bear Creek, TX (US);
`Atish Ghosh, Austin, TX (US)
`
`(73) Assignee: Standard Microsystems Corporation,
`Hauppauge, NY (US)
`
`( *) Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`
`This patent is subject to a terminal dis(cid:173)
`claimer.
`
`(21) Appl. No.: 12/340,957
`
`(22) Filed:
`
`Dec. 22, 2008
`
`(65)
`
`Prior Publication Data
`
`US 2009/0106474Al
`
`Apr. 23, 2009
`
`Related U.S. Application Data
`
`CA
`
`2298783
`
`912000
`
`(Continued)
`
`OTHER PUBLICATIONS
`
`Belkin, "4x4 USB Peripheral Switch Review", Feb. 25, 2004,
`retrieved from Internet: http://www.everythingusb.com/hardware/in(cid:173)
`dex/Belkin_ USB _Peripheral_Switch.htrn, 4 pages.
`
`(Continued)
`
`Primary Examiner-Mark Rinehart
`Assistant Examiner-Jeremy S Cerullo
`(74) Attorney, Agent, or Firm-Meyertons Hood Kivlin
`Kowert & Goetze!, P.C.; Jeffrey C. Hood
`
`(57)
`
`ABSTRACT
`
`(63) Continuation of application No. 11/425,613, filed on
`Jun. 21, 2006, now Pat. No. 7,523,243.
`
`(60) Provisional application No. 60/792,178, filed on Apr.
`14, 2006.
`
`(51)
`
`Int. Cl.
`G06F 13100
`(2006.01)
`G06F 13114
`(2006.01)
`G06F 13136
`(2006.01)
`(52) U.S. Cl. ....................... 710/305; 710/104; 710/110;
`710/309
`(58) Field of Classification Search ................. 710/104,
`710/110, 305, 309
`See application file for complete search history.
`
`(56)
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`5,784,581 A
`7/1998 Hannah
`(Continued)
`
`A USB device may be simultaneously configured and
`accessed by two or more USB hosts. The USB device may
`include separate upstream ports and buffers for each host, and
`a multi-host capable device controller configured to respond
`to simultaneous USB requests received from more than one
`host. The USB device may maintain a dedicated address,
`configuration, and response information for each host. The
`USB device may include a shared USB function block, and a
`multi-host controller configured to establish concurrent
`respective USB connections between the shared USB func(cid:173)
`tion block and two or more USB hosts, to allow the two or
`more USB hosts to simultaneously configure the USB device
`for the shared USB function. The multi-host controller may
`be configured to receive and respond to simultaneous respec(cid:173)
`tive USB access requests for the shared USB function sent by
`the two or more USB hosts.
`
`25 Claims, 2 Drawing Sheets
`
`Connection
`to first
`Host
`
`Connection
`to second
`Host
`
`USB Multi-Host Device
`
`1
`
`DELPHI Exhibit 1013
`
`
`
`US 7,627,708 B2
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`5,815,167 A
`5,890,015 A
`5,953,511 A
`5,978,389 A
`6,119,196 A
`6,141,719 A
`6,145,045 A
`6,185,641 Bl
`6,205,501 Bl
`6,279,060 Bl
`6,304,995 Bl
`6,308,239 Bl
`6,324,605 Bl
`6,435,904 Bl
`6,480,927 Bl
`6,505,267 B2
`6,516,205 Bl
`6,532,512 Bl
`6,546,450 Bl
`6,564,275 Bl
`6,600,739 Bl
`6,601,146 B2
`6,618,776 Bl
`6,622,195 B2
`6,671,765 Bl
`6,678,760 B2
`6,725,302 Bl
`6,732,218 B2
`6,775,733 B2
`6,816,929 B2
`6,850,998 B2 *
`6,901,471 B2
`6,959,355 B2
`6,973,078 B2
`6,993,620 B2
`7,024,501 Bl
`7,028,114 Bl
`7,028,133 Bl
`7,185,126 B2
`7,246,189 B2 *
`7,523,243 B2 *
`200410153597 Al
`2005/0005045 Al*
`2005/0060490 Al*
`2005/0060636 Al
`2005/0216620 Al
`2006/0020737 Al
`2006/0056401 Al
`2006/0059293 Al
`
`9/1998 Muthal et al.
`3/1999 Garney et al.
`9/1999 Sescila, III et al.
`1111999 Chen
`912000 Muller et al.
`10/2000 Rafferty et al.
`1112000 Falik et al.
`2/2001 Dunnihoo
`3/2001 Brief et al.
`8/2001 Luke et al.
`10/2001 Smith et al.
`10/2001 Osakada et al.
`1112001 Rafferty et al.
`8/2002 Herbst et al.
`1112002 Bauman
`112003 Luke et al.
`212003 Oguma
`3/2003 Torii et al.
`4/2003 Liu
`5/2003 Chen
`7/2003 Evans et al.
`7/2003 Auslander et al.
`9/2003 Zimmermann et al.
`9/2003 Osakada et al.
`12/2003 Karlsson et al.
`112004 Brief
`412004 Benayoun et al.
`512004 Overtoom et al.
`8/2004 Chang et al.
`1112004 Ueda
`212005 Inoue et al. ................... 710/38
`512005 Govindaraman
`10/2005 Szabelski
`12/2005 Ma
`112006 Ferguson
`412006 Wright
`412006 Milan eta!.
`412006 Jackson
`212007 Szabelski
`7/2007 Ulenas ....................... 710/305
`412009 Bohm et al.
`................ 710/305
`8/2004 Kanai et al.
`112005 Kim et al. ..................... 710/74
`3/2005 Lu ............................. 7111115
`3/2005 Mathe
`912005 Sandulescu et al.
`112006 Szabelski
`3/2006 Bohm et al.
`3/2006 Wurzburg et al.
`
`FOREIGN PATENT DOCUMENTS
`
`EP
`GB
`JP
`JP
`JP
`
`0 982 663 A2
`2352540
`2000242377
`2001043178
`2001229119
`
`3/2000
`112001
`912000
`2/2001
`8/2001
`
`JP
`KR
`KR
`WO
`
`2003195991
`1020040008365 A
`100490068 Bl
`WO 2006031776
`
`7/2003
`112004
`512005
`3/2006
`
`OTHER PUBLICATIONS
`
`Australian Patent Office Written Opinion for application No. SG
`200702711-3, mailed May 21, 2008.
`Human translation of JP 2001229119A Publication, "Device Selec(cid:173)
`tion Hubbox by Plural Computers" obtained on Jun. 23, 2008 (12
`pages).
`Programming Multi-Host Device Sharing USB Hub; Research Dis(cid:173)
`closure, IBM Corp.; Feb. 1, 1999; Mason Publications; Hampshire,
`GB.
`"On-The-Go Supplement to the USB 2.0 Specification-Revision
`1.0"; Dec. 18, 2001.
`Cypress Semiconductor Corporation, "TetraHubTM High-speed
`USB Hub Controller," Publication No. CY7C6540, Dec. 5, 2002, 25
`pages.
`"USB Hub in a Nutshell"; Beyond Logic; Jun. 15, 2005 (Copyright
`2001-2005); 5 Pages, Chapter 1.
`Fred Zlotnick; "NLAS47 l 7 Analog Switch Permits USB 1.1 Switch(cid:173)
`ing"; on Semiconductor; May 2004; 4 pages.
`"FSUSBl 1 Low Power High Bandwidth USB Switch Dual SPDT
`Multiplexer/Demultiplexer"; Fairchild Semiconductor; Apr. 2004
`(revised Jul. 2004); 7 pages.
`"FSUSBl 1 Low Power Full Speed USB (12 Mbps) Switch";
`Fairchild Semiconductor; Apr. 2004 (revised Jul. 2005); 9 pages.
`"USB 1.1 Switch Offers Low Power and Bandwidth"; Electronic
`Design; Jul.I Aug. 2004; 3 pages.
`"Universal Serial Bus Specification Revision 2.0", Compaq Com(cid:173)
`puter Corporation, Hewlett-Packard Company, Intel Corporation,
`Lucent Technologies Inc., Microsoft Corporation, NEC Corporation,
`Koninklijke Philips Electroncs N. V., Apr. 27, 2000, 650 pages.
`USB2524 USB MultiSwitch Hub, http://www.smsc.com/main/cata(cid:173)
`log/usb2524.html, accessed Nov. 26, 2007 (4 pages).
`"MSC Introduces Industry's First USB Sharing Hub," networking
`http://home.nestor.minsk.by/networks/news/2006/04/ 1706.
`news,
`html, accessed Nov. 26, 2007 (2 pages).
`Miller, Matthew, "USB hub chip accepts hospitality of two hosts"
`http://www.edn.com/index.asp?layout~article
`&articleid~CA6325520&industryid~2573, Apr. 17, 2006, accessed
`Nov. 26, 2007 (5 pages).
`"USB hub" from Wikipedia, the free encyclopedia (http://en.
`wikipedia.org?wiki/USB_hub ); 2 pages.
`"USB2.0 Compatible 4-Port Switching Hub with Two Upstream
`Host Ports"; SMSC Datasheet; Nov. 8, 2005; 26 pages; Standard
`Microsystems Corp.; Hauppauge, NY.
`Computer-generated translation of JP2001229119A Publication,
`"Device Selection Hubbox by Plural Computers", by Hitachi Ltd.,
`published Aug. 24, 2001, 21 pages.
`Human-generated translation of JP20011229119A Publication,
`"Device Selection Hubbox by Plural Computers", by Hitachi Ltd.,
`published Aug. 24, 2001, 2 pages.
`Korean Office Action for Application 10-2007-7005961, entitled
`"Universal Serial Bus Switching Hub," dated Apr. 18, 2008, 5 pages.
`* cited by examiner
`
`2
`
`
`
`U.S. Patent
`
`Dec. 1, 2009
`
`Sheet 1of2
`
`US 7,627,708 B2
`
`1021
`
`Host 1
`
`106 l
`
`1081
`
`USB Multi-
`Host Device
`Controller
`
`FIG. 1
`
`104~)
`
`Host 2
`
`120
`
`FIG. 2
`
`3
`
`
`
`U.S. Patent
`
`Dec. 1, 2009
`
`Sheet 2of2
`
`US 7,627,708 B2
`
`Connection
`to first
`Host
`~
`
`Connection
`to second
`Host
`
`...
`3021
`7
`........... -~--
`Upstream
`Port
`(PHY)
`#1
`
`...
`
`7
`
`Upstream
`Port
`(PHY)
`#2
`
`T"""
`+-'
`CJ)
`0
`I
`
`3061
`
`""'-.._ 7
`
`USB
`Endpoint
`&
`Status
`
`N
`+-'
`CJ)
`0
`I
`
`r3oB
`
`"""-- 7
`USB
`Endpoint
`&
`Status
`
`108
`
`312
`
`...
`
`7
`
`...
`
`7
`
`USB Multi-Host Device
`Controller
`
`""'
`
`,.
`
`Device/Function
`
`USB Multi-Host Device
`
`FIG. 3
`
`4
`
`
`
`US 7,627,708 B2
`
`1
`MULTI-HOST USB DEVICE
`
`PRIORITY CLAIM
`
`2
`tions, however, fail to permit simultaneous access to the USB
`device that is downstream of the hub or switch. The USB
`device is typically accessed by one single host at a time, and
`when access to the USB device is switched, the device must
`be re-configured, thereby losing internal state information.
`Other corresponding issues related to the prior art will
`become apparent to one skilled in the art after comparing such
`prior art with the present invention as described herein.
`
`SUMMARY OF THE INVENTION
`
`5
`
`This application is a continuation of U.S. patent applica-
`tionSer. No.11/425,613 titled "Multi-HostUSB Device Con(cid:173)
`troller" filed Jun. 21, 2006, now U.S. Pat. No. 7,523,243
`whose inventors are Mark R. Bohm and Atish Ghosh, which
`claims benefit of priority of provisional application Ser. No.
`60/792,178 titled "Multi-Host USB Device Controller", filed 10
`on Apr. 14, 2006, whose inventors are Mark. R Bohm and
`Atish Ghosh, and which are all hereby incorporated by refer(cid:173)
`ence in their entirety as though fully and completely set forth
`herein.
`
`BACKGROUND OF THE INVENTION
`
`1. Field of the Invention
`The present invention relates generally to computer hard(cid:173)
`ware and, more specifically, to Universal Serial Bus (USB)
`controllers.
`2. Description of the Related Art
`The Universal Serial Bus (USB) allows coupling of periph(cid:173)
`eral devices to a computer system. USB is a serial cable bus
`for data exchange between a host computer and a wide range
`of simultaneously accessible devices. The bus allows periph(cid:173)
`erals to be attached, configured, used, and detached while the
`host is in operation. For example, USB printers, scanners,
`digital cameras, storage devices, card readers, etc. may com(cid:173)
`municate with a host computer system over USB. USB based
`systems may require that a USB host controller be present in
`the host system, and that the operating system (OS) of the host
`system support USB and USB Mass Storage Class Devices.
`USB devices may communicate over the USB bus at low(cid:173)
`speed (LS), full-speed (FS), or high-speed (HS). A connec- 35
`ti on between the USB device and the host may be established
`via digital interconnect such as Interchip USB, ULPI, UTMI,
`etc., or via a four wire interface that includes a power line, a
`ground line, and a pair of data lines D+ and D-. When a USB
`device connects to the host, the USB device may first pull a 40
`D+ line high-or the D- line if the device is a low speed
`device-using a pull up resistor on the D+ line. The host may
`respond by resetting the USB device. If the USB device is a
`high-speed USB device, the USB device may "chirp" by
`driving the D- line high during the reset. The host may 45
`respond to the "chirp" by alternately driving the D+ and D(cid:173)
`lines high. The USB device may then electronically remove
`the pull up resistor and continue communicating at high
`speed. When disconnecting, full-speed devices may remove
`the pull up resistor from the D+ line (i.e., "tri-state" the line), 50
`while high-speed USB devices may tri-state both the D+ and
`D- lines.
`A USB hub may be coupled to a USB host controller to
`allow multiple USB devices to be coupled to the host system
`through the USB host controller. In addition, other USB hubs 55
`may be coupled to the USB hub to provide additional USB
`device connections to the USB host controller. In general, the
`USB specification is structured so that every device is con(cid:173)
`figured and accessed by a single host controller. Consumers
`typically desire maximum flexibility, and may want to have a 60
`simple means by which to cheaply share devices. There are
`several switching devices that currently allow a device to be
`switched between multiple USB Host controllers, but the
`device can generally be configured and accessed by only a
`single host at any given time. There also exist stand-alone 65
`USB switches that provide the capability of switching a
`device between upstream USB Host Controllers. These solu-
`
`In one set of embodiments, a single USB device may be
`shared across multiple USB hosts without needing to be re(cid:173)
`configured or re-enumerated each and every time the
`15 upstream hosts alternate accessing the USB device. Since
`each host has simultaneously enumerated the device, there
`may be no need to detach and reconfigure the device on the
`fly. Multiple USB hosts may simultaneously share a single
`device/function, for example a Gigabit Ethernet controller.
`20 While in most present day implementations each host that is
`configured to have Ethernet access is implemented with its
`own Ethernet controller and Ethernet switch, in various
`embodiments of the present invention the Ethernet switch
`may be replaced by a less expensive and more compact multi-
`25 host USB controller, allowing each host to access the USB
`device directly. In another set of embodiments, storage media
`devices may be configured with a multi-host USB controller
`to provide a USB based Network Attached Storage (NAS)
`device that can handle storage requests from multiple USB
`30 hosts.
`In various embodiments, by using a multi-host capable
`device controller, a shared USB device may be simulta(cid:173)
`neously configured and accessed by two or more USB hosts.
`The multi-host capable device may include separate buffers
`for each host, and may be configured with the capability to
`respond to USB requests from more than one host. The device
`may maintain a dedicated address, configuration and
`response information for each host. Each host may therefore
`establish a dedicated USB connection with the sharing
`device.
`A USB device may be divided into three segments or
`blocks. The first block may comprise a USB interface that
`includes the physical (PHY) or digital link, USB Link layer
`(SIE), and other circuitry necessary to send and/or receive
`data over the USB. The second block may comprise an End(cid:173)
`point Buffer Block, which may include the endpoint buffers
`that are used by the first and third blocks to buffer data and
`control reads and writes to/from the USE-transferred
`through the first block-and/or the Peripheral Function(cid:173)
`transferred through the third block. The third block may com(cid:173)
`prise the "Peripheral Function" itself, which may include the
`circuitry necessary for the specific USB device function, for
`example an Ethernet Controller, printer, Video Camera, etc.
`In one set of embodiments, the first block may be replicated
`for each upstream host port, and some, or all, of the second
`block may be replicated for each upstream host port as well.
`In each case, the extent to which blocks and/or portions of the
`blocks are replicated may vary based on USB device type.
`The third block may correspond to the USB device that will
`be shared by multiple USB hosts, and may therefore not need
`to be duplicated. A fourth block may be added-typically
`between the first and second blocks, or as part of either the
`second or third blocks--configured as an arbitration block.
`The internal arbitration mechanism may enable each host to
`access the shared Peripheral Function by either interleaving
`host accesses, or by using a common request/grant structure,
`which may hold-off one host while another host completes a
`
`5
`
`
`
`US 7,627,708 B2
`
`3
`data transfer to/from the shared device. The selection of the
`specific mechanism used may be determined according to the
`specific USB device type that is being shared.
`In some embodiments, the bandwidth from the shared
`peripheral function to each host may be reduced in order to 5
`allow each host equal access. In other embodiments, the
`bandwidth may not be reduced because the bandwidth of the
`Peripheral Function may exceed the bandwidth of the host.
`Other aspects of the present invention will become apparent
`with reference to the drawings and detailed description of the 10
`drawings that follow.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`4
`configured to interface/couple to the second host (for example
`second host 104 shown in FIG. 1 ). Multi-host device 106 may
`be addressed separately by each host, and may respond to
`each host within USB specified limits. Multi-host device
`controller 108 may internally determine which host request to
`fully service immediately, and may either send not-ready
`packets in a USB specific manner to the other host, or may
`interleave the host requests. Peripheral Device/Function
`312-which may comprise the main consumer component,
`such as a Ethernet Controller, Mass-Storage drive, etc.-may
`not be aware of the multi-host capability of the USB compo-
`nent, and may be a standard off-the-shelf item.
`Multi-host device 106 may also be configured with End(cid:173)
`point and status buffers 306 and 308, coupling USB multi-
`15 host device controller 108 to PHY 302 and PHY 304, respec(cid:173)
`tively. Endpoint buffers 306 and 308 may be used by upstream
`ports 302 and 304, and USB multi-host device controller 108
`to buffer data and control reads and writes to/from each
`respective host corresponding to PHY 302 and PHY 304,
`20 and/or peripheral device/function 312 coupled to USB multi(cid:173)
`host device controller 108.
`In one set of embodiments, USB multi-host device control-
`ler 108 may be configured with an internal arbitration mecha(cid:173)
`nism that may permit each host-first host 102 and second
`host 104, for example-to access shared peripheral function
`312 by either interleaving host accesses, or by using a com-
`mon request/grant structure that may hold-off one host while
`another host completes a data transfer to/from shared device/
`function 312. The selection of the specific mechanism used
`may be configured according to the specific USB device type
`that is being shared. In one set of embodiments, the band-
`width from shared peripheral device/function 312 to each
`host may be reduced in order to allow each host equal access.
`In other embodiments, the bandwidth may not be reduced if
`the bandwidth of the peripheral function exceeds the band(cid:173)
`width of the host.
`It should be noted that while FIG. 3 shows 2 upstream ports
`coupling to two hosts, alternate embodiments may be config(cid:173)
`ured with more than two upstream ports, (and correspond(cid:173)
`ingly with possibly more than two endpoint and status buff(cid:173)
`ers), and while those embodiments are not shown, they are
`possible and are contemplated. For example, a multi-host
`device (e.g. a keyboard) may be configured with a multi-host
`device controller to couple to three or four hosts, and so forth.
`Although the embodiments above have been described in
`considerable detail, other versions are possible. Numerous
`variations and modifications will become apparent to those
`skilled in the art once the above disclosure is fully appreci(cid:173)
`ated. It is intended that the following claims be interpreted to
`50 embrace all such variations and modifications. Note the sec-
`tion headings used herein are for organizational purposes
`only and are not meant to limit the description provided
`herein or the claims attached hereto.
`We claim:
`1. A USB multi-host device comprising:
`first and second upstream ports configured to couple to
`corresponding first and second hosts;
`a USB function block; and
`a multi-host device controller coupling the USB function
`block to the first and second upstream ports, wherein the
`multi-host device controller is configured to establish
`concurrent respective USB connections between the
`USB function block and the first and second upstream
`ports, to allow the corresponding first and second hosts
`to:
`simultaneously enumerate and configure the USB multi(cid:173)
`host device;
`
`45
`
`A better understanding of the present invention may be
`obtained when the following detailed description is consid(cid:173)
`ered in conjunction with the following drawings, in which:
`FIG. 1 shows a system diagram of a multi-host capable
`USB device coupled to multiple hosts according to one
`embodiment;
`FIG. 2 shows multi-host capable devices coupling to mul(cid:173)
`tiple hosts according to one embodiment; and
`FIG. 3 shows a logic diagram of a USB multi-host device
`according to one embodiment.
`While the invention is susceptible to various modifications 25
`and alternative forms, specific embodiments thereof are
`shown by way of example in the drawings and will herein be
`described in detail. It should be understood, however, that the
`drawings and detailed description thereto are not intended to
`limit the invention to the particular form disclosed, but on the 30
`contrary, the intention is to cover all modifications, equiva(cid:173)
`lents, and alternatives falling within the spirit and scope of the
`present invention as defined by the appended claims. Note,
`the headings are for organizational purposes only and are not
`meant to be used to limit or interpret the description or claims. 35
`Furthermore, note that the word "may" is used throughout
`this application in a permissive sense (e.g., having the poten(cid:173)
`tial to or being able to in some embodiments), not a manda(cid:173)
`tory sense (i.e., must). The term "include", and derivations
`thereof, mean "including, but not limited to". The term 40
`"coupled" means "directly or indirectly connected".
`
`DETAILED DESCRIPTION OF THE PREFERRED
`EMBODIMENTS
`
`In one set of embodiments, a multi-host USB device may
`provide maximum flexibility and a simple means by which to
`cheaply share devices with multiple hosts, by providing a
`separate configuration and access interface for each upstream
`host. FIG. 1 illustrates a block diagram of a multi-host device
`106 configured with a USB multi-host device controller 108,
`with multi-host device 106 coupled to first host 102 and
`second host 104, which may both establish control with
`multi-host device 106. As shown in FIG. 2, by way of
`examples, multi-host device 106---configured with USB 55
`multi-host device controller 108-may be a personal digital
`assistant (PDA) 130, a keyboard 126, and/or a printer 120
`shared by personal computer (PC) 122 and PC 123. Many
`other devices may be similarly configured as multi-host
`devices that include a multi-host device controller 108, and 60
`the number and type of such devices is not limited to those
`show in FIG. 2.
`In one embodiment of multi-host (or USB sharing) device
`106, shown in FIG. 3, an upstream port or PHY is configured
`for each host to be connected. In this case upstream port 302 65
`is configured to interface/couple to the first host (for example
`first host 102 shown in FIG. 1), and upstream port 304 is
`
`6
`
`
`
`US 7,627,708 B2
`
`5
`simultaneously access the USB multi-host device; and
`alternately access the USB function block without
`reconfiguring and/or re-enumerating the USB multi(cid:173)
`host device before each access.
`2. The USB multi-host device of claim 1, further compris(cid:173)
`ing a first endpoint buffer coupled between the first upstream
`port and the multi-host device controller, and a second end(cid:173)
`point buffer coupled between the second upstream port and
`the multi-host device controller.
`3. A USB multi-host device comprising:
`a USB function block; and
`a multi-host device controller coupling the USB function
`block to a first host and a second host, wherein the
`multi-host device controller is configured to establish a 15
`first USB connection between the first host and the USB
`function block and a second USB connection between
`the second host and the USB function block, wherein the
`first USB connection and the second USB connection
`are concurrent, to allow the first host and the second host 20
`to:
`simultaneously access the USB multi-host device; and
`alternately access the USB function block, without
`either one of the first and second hosts reconfiguring
`the USB multi-host device each time a different one of
`the first host and the second host is given access to the
`USB function block.
`4. The USB multi-host device of claim 3, wherein the
`multi-host USB device is not re-enumerated by eitherthe first
`host or the second host each time the first host and the second 30
`host alternate accessing the USB function block.
`5. The USB multi-host device of claim 3, further compris(cid:173)
`ing a first upstream port coupled between the first host and the
`multi-host device controller, and a second upstream port
`coupled between the second host and the multi-host device
`controller.
`6. The USB multi-host device of claim 5, further compris(cid:173)
`ing a first endpoint buffer coupled between first upstream port
`and the multi-host device controller, and a second endpoint
`buffer coupled between the second upstream port and the
`multi-host device controller.
`7. A USB device comprising:
`a USB function block; and
`a multi-host device controller configured to couple the 45
`USB function block to a plurality of hosts, wherein the
`multi-host device controller is operable to establish con(cid:173)
`current respective USB connections between the USB
`function block and the plurality of hosts, to allow the
`plurality of hosts to:
`simultaneously enumerate and configure the USB
`device;
`simultaneously access the USB device; and
`alternately access the USB function block, without any
`of the plurality of hosts reconfiguring the USB device
`each time a different one of the plurality of hosts is
`given access to the USB function block.
`8. The USB device of claim 7, wherein the multi-host
`device controller is operable to simultaneously receive
`respective host requests from the plurality of hosts, wherein
`the multi-host device controller is operable to internally
`determine which of the respective host requests to service
`immediately.
`9. The USB device of claim 8, wherein the multi-host 65
`device controller is operable to interleave the respective host
`requests.
`
`6
`10. The USB device of claim 8, wherein the multi-host
`device controller is operable to send not-ready packets in a
`USB specific manner to hosts whose request was not imme(cid:173)
`diately serviced.
`11. The USB device of claim 7, wherein the multi-host
`device controller comprises an internal arbitration mecha(cid:173)
`nism configured to permit the plurality of hosts to simulta(cid:173)
`neously request access to the USB function block by inter(cid:173)
`leaving host access requests and/or by using a common
`10 request/grant structure;
`wherein the common request/grant structure comprises
`one of the plurality of hosts being granted access to the
`USB function block while remaining ones of the plural(cid:173)
`ity of hosts are not considered for access to the USB
`function block until the one of the plurality of hosts has
`completed accessing the USB function block.
`12. The USB device of claim 11, wherein the arbitration
`mechanism is configured according to a specific USB device
`type comprised in the USB function block.
`13. The USB device of claim 7, wherein a bandwidth from
`the USB function block to each respective one of the plurality
`of hosts is reduced to allow each respective one of the plural(cid:173)
`ity of hosts equal access to the USB function block.
`14. The USB device of claim 13, wherein the bandwidth is
`25 not reduced if it exceeds a bandwidth of the respective one of
`the plurality of hosts.
`15. The USB device of claim 7, further comprising a
`respective upstream port coupled between the multi-host
`device controller and each of the plurality of hosts.
`16. The USB device of claim 15, further comprising a
`respective buffer coupled between each respective upstream
`port and the multi-host device controller.
`17. The USB device of claim 7, wherein the multi-host
`device controller is configured to maintain respective dedi-
`35 cated address, configuration, and response information for
`each of the plurality of hosts.
`18. A method for sharing a USB device between multiple
`hosts, the method comprising:
`establishing concurrent respective USB connections
`between a plurality of hosts and a shared USB function
`comprised in the USB device;
`two or more of the multiple hosts simultaneously enumer(cid:173)
`ating and configuring the USB device;
`receiving respective access requests to the shared USB
`function from the two or more of the plurality of hosts;
`and
`processing the respective access requests, to allow the two
`or more of the plurality of hosts to alternately access the
`shared USB function without any of the two or more of
`the plurality of hosts reconfiguring the USB device each
`time the USB function is accessed in response to a
`respective access request from a different one of the two
`or more of the plurality of hosts.
`19. The method of claim 18, wherein said processing com(cid:173)
`prises determining which of the respective access requests to
`service immediately, and servicing that respective access
`request.
`20. The method of claim 19, wherein said processing com-
`60 prises holding off access to the shared USB function by those
`respective access requests that are not immediately serviced,
`until the shared USB function is no longer accessed by a given
`one of the two or more of the plurality ofhosts from which the
`serviced respective access request was received.
`21. The method of claim 18, wherein said processing com(cid:173)
`prises interleaving accesses requested by the respective
`access requests to the shared USB function.
`
`40
`
`50
`
`55
`
`7
`
`
`
`US 7,627,708 B2
`
`7
`22. The method of claim 18, further comprising maintain(cid:173)
`ing respective dedicated address, configuration, and response
`information for each of the plurality of hosts.
`23. A USB device comprising:
`a shared USB function block; and
`a controller configured to establish concurrent respective
`USB connections between the shared USB function
`block and two or more USB hosts, to allow the two or
`more USB hosts to simultaneously configure the USB
`device for the shared USB function;
`wherein the controller is configured to receive and respond
`to simultaneous respective USB access requests sent by
`the two or more USB hosts for accessing the shared USB
`function.
`24. The USB device of claim 23, wherein in establishing 15
`the concurrent respective USB connections between the
`
`10
`
`8
`shared USB function block and the two or more USB hosts,
`the controller is operable to maintain respective dedicated
`address, configuration and response information for each of
`the two or more USB hosts.
`25. The USB device of claim 23, wherein the controller
`comprises:
`a respective USB interface circuit for each of the two or
`more USB hosts, wherein each respective USB interface
`circuit enables the USB device to transmit and/or receive
`data over a USB bus; and
`a respective endpoint buffer for each of the two or more
`USB hosts for storing respective dedicated address, con(cid:173)
`figuration and response information for each of the two
`or more USB hosts.
`
`* * * * *
`
`8
`
`