Method, computer program product, and system for detecting a peripheral device in a computer system

Information

  • Patent Grant
  • 6813730
  • Patent Number
    6,813,730
  • Date Filed
    Wednesday, July 11, 2001
    23 years ago
  • Date Issued
    Tuesday, November 2, 2004
    19 years ago
Abstract
A method, computer program product, and system are provided that include reading a first indicator from a memory location, checking a first port associated with the first indicator for the presence of a peripheral device, and, in response to the peripheral device not being present on the first port, storing a second indicator associated with a second port in the memory location.
Description




BACKGROUND




The disclosures herein relate generally to computer systems and more particularly to a method, computer program product, and system for detecting a peripheral device in a computer system.




Modern computer systems include ports configured to receive a peripheral device. As part of the process of booting a computer system, the system may check each port in the system to detect one or more peripheral devices coupled to each port. Checking each port in the system, however, adds to the amount of time it takes to boot the computer system. This time delay may be worsened where the system looks for and does not find a particular device on a particular port.




It would be desirable to reduce the amount of time is takes to boot a computer system.




SUMMARY




One embodiment, accordingly, provides a method that includes reading a first indicator from a memory location, checking a first port associated with the first indicator for the presence of a peripheral device, and, in response to the peripheral device not being present on the first port, storing a second indicator associated with a second port in the memory location.




A principal advantage of this embodiment is that it may reduce the amount of time it takes to boot a computer system. A computer system may check for a peripheral device in a location where the device was previously detected. In doing so, the computer system may more rapidly locate the peripheral device and reduce the amount of time it takes to boot the computer system.











BRIEF DESCRIPTION OF THE DRAWINGS





FIG. 1

is a diagram illustrating a first embodiment of a chassis for housing a computer system and for receiving peripheral devices associated with the computer system.





FIG. 2

is a diagram illustrating an embodiment of selected portions of a computer system.





FIG. 3

is a flow chart illustrating an embodiment of a method for detecting a peripheral device in a computer system.





FIG. 4

is a diagram illustrating a second embodiment of a chassis for housing a computer system and for receiving peripheral devices associated with the computer system.





FIG. 5

is a diagram illustrating an embodiment of selected portions of a computer system.











DETAILED DESCRIPTION





FIG. 1

is a diagram illustrating a first embodiment of a chassis


100


for housing a computer system and for receiving peripheral devices


110


and


120


associated with the computer system. Peripheral device


110


includes a keyboard and will be referred to herein as keyboard


110


. Peripheral device


120


is a mouse and will be referred to herein as mouse


120


. In other embodiments, peripheral devices


110


and


120


may be other types of devices and/or may be configured to perform other functions.




In the embodiment shown in

FIG. 1

, a user of the computer system may connect keyboard


110


to port


102


and mouse


120


to port


104


. Alternatively, the user of the computer system may connect keyboard


110


to port


104


and mouse


120


to port


102


. Keyboard


110


couples to the computer system housed in chassis


100


by coupling connector


112


to port


102


or port


104


. Similarly, mouse


120


couples to the computer system housed in chassis


110


by coupling connector


122


to port


102


or port


104


.




In order for the computer system to function properly, the computer system detects the presence of keyboard


110


on port


102


or port


104


. Similarly, the computer system detects the presence of mouse


120


on port


102


or port


104


.





FIG. 2

is a first diagram illustrating an embodiment of selected portions of a computer system


200


. In one embodiment, computer system


200


is housed in a chassis similar to chassis


100


shown in FIG.


1


. In other embodiments, computer system


200


may be included in other types of housings. As shown in a box


200




a,


computer system


200


includes a processor


210


, a chipset


220


, ports


102


and


104


, a CMOS memory


230


, a storage device


240


, and a plurality of devices


250


,


252


, and


254


. Chipset


220


includes a keyboard controller


222


. CMOS


230


includes an indicator


232


and a basic input output system (BIOS)


234


. BIOS


234


includes a module


236


.




CMOS


230


is one example of an apparatus for storing module


236


such that module


236


is accessible by computer system


200


. In other embodiments, other apparatus may be used such as a CD-ROM, a floppy disk, a hard disk, or other storage media.




Module


236


includes instructions that are configured to cause computer system


200


to detect the presence of peripheral devices on ports such as port


102


and port


104


in computer system


200


. In particular, module


236


causes computer system


200


to detect the presence of a keyboard, such as keyboard


110


shown in

FIG. 1

, on port


102


or port


104


in response to computer system


200


being booted up. Computer system


200


may boot in response to being powered up, i.e. turned on, or restarted. In the embodiment shown in

FIG. 2

, module


236


is included in BIOS


234


. In other embodiments, the software of module


236


may be included in a system firmware, an operating system, or other software configured to boot or reboot the computer system.




Indicator


232


includes one or more bits that store a value. The value identifies a port of computer system


200


. In an embodiment where computer system


200


is included in chassis


100


shown in

FIG. 1

, indicator


232


identifies either port


102


or port


104


according to a value of indicator


232


. For example, in an embodiment where indicator


232


includes a single bit, then a logical “one” value of the bit may identify port


102


and a logical “zero” value of the bit may identify port


104


. In other embodiments, indicator


232


may include other bits or other values to identify one or more of a set of ports.




In response to booting or rebooting, computer system


200


executes instructions in BIOS


234


to identify and initialize components, including peripheral devices, of computer system


200


. One of the functions performed by BIOS


234


includes detecting a location of a keyboard coupled to computer system


200


. In the embodiment shown in

FIG. 2

, computer system


200


executes module


236


to perform this function. Module


236


causes indicator


232


to be read. As noted above, indicator


232


identifies either port


102


or port


104


. Module


236


then causes the port identified by indicator


232


, i.e. port


102


or port


104


, to be checked for the presence of the keyboard. If the keyboard is present on the port identified by indicator


232


, then module


236


completes and returns control of computer system


200


to BIOS


234


.




If the keyboard is not present on the port identified by indicator


232


, then module


236


causes another port to be checked for the presence of the keyboard. In the embodiment shown in

FIG. 2

, module


236


causes the port not identified by indicator


232


to be checked. For example, if indicator


232


identifies port


102


, then module


236


causes port


104


to be checked. If the keyboard is detected on port


104


in this example, then module causes a memory location associated with indicator


232


to store a value that identifies port


104


. In other embodiments, additional ports may be checked for the presence of the keyboard or another peripheral device. A value that identifies the port where the keyboard or other peripheral device is detected may then be stored in indicator


232


. In addition, module


236


may check other ports for the presence of other types of peripheral devices using indicator


232


or another indicator.




By replacing the value stored in indicator


232


, module


236


causes the identity of the port where the keyboard was last detected to be saved. By saving the identity of the port, module


236


will first check this port for the presence of the keyboard in response to computer system


200


being powered up, restarted, booted, or rebooted, i.e. the next time module


236


executes to detect the port where the keyboard is connected.




In one embodiment, module


236


causes a port to be checked for the presence of a peripheral device by performing a port call to the port. To perform a port call, module


236


causes a signal to be sent to the port. If module


236


does not detect a response to the signal within a predetermined time period, i.e. the port call times out, then module


236


assumes that the peripheral device is not on the port and checks another port for the presence of the peripheral device. Module


236


continues to cause ports to be checked until it either detects the peripheral device or checks the set of ports where the peripheral device may be found. If the peripheral device is not found on any of the set of ports, then an error may be reported. After module


236


receives a response to the signal from a port that indicates the presence of the peripheral device, module


236


returns control of computer system


200


to BIOS


234


. In an embodiment where the peripheral device is a keyboard, module


236


may also cause a value associated with port


102


or port


104


to be stored in a register in keyboard controller


222


. In other embodiments, the presence of a peripheral device on a port may be checked in other ways.





FIG. 3

is a flow chart illustrating an embodiment of a method for detecting a peripheral device in a computer system. An indicator is read from a memory location as indicated in step


302


. A port associated with the indicator is checked for the presence of a peripheral device as indicated in step


304


. A determination is made as to whether the peripheral device is present on the port as indicated in step


306


. If the peripheral device is present at the port, then the method concludes as indicated.




If the peripheral device is not present at the port, then a determination is made as to whether there is another port to check for the presence of the peripheral device as indicated in step


308


. If there is no other port to check, then an error is reported as indicated in step


310


. The error may indicate that the peripheral device was not found on any of the ports checked by the method.




If there is another port to check, then an indicator associated with a different port is stored in the memory location as indicated in step


312


. The port associated with the indicator is checked for the presence of the peripheral device as indicated in step


314


. Depending on the implementation, the functions described in steps


312


and


314


may occur in any order or substantially simultaneously. The method then returns to the determination in step


306


.





FIG. 4

is a diagram illustrating a second embodiment of chassis


400


for housing a computer system and for receiving peripheral devices associated with the computer system. Chassis


400


is coupled to a hub


410


and a hub


420


using a port


402


and a port


404


, respectively, as indicated by a connection


416


and a connection


426


, respectively. Hub


410


is coupled to a device


412


and a device


414


using a port


418




a


and a port


418




b,


respectively. Hub


420


is coupled to a device


422


and a device


424


using a port


428




a


and a port


428




b,


respectively. Devices


412


,


414


,


422


, and


424


are each a peripheral device such as a keyboard or a mouse. In other embodiments, other hubs may be attached to hub


410


or hub


420


and other numbers of devices may be attached to hub


410


, hub


420


, or other hubs.





FIG. 5

is a diagram illustrating an embodiment of selected portions of a computer system


500


. As shown in a box


500




a,


computer system


500


includes a processor


210


, a chipset


220


, ports


402


and


404


, a CMOS memory


230


, a storage device


240


, and a plurality of devices


250


,


252


, and


254


. Chipset


220


includes a keyboard controller


222


. CMOS


230


includes an indicator


532


and a basic input output system (BIOS)


234


. BIOS


234


includes a module


536


.




CMOS


230


is one example of an apparatus for storing module


536


such that module


536


is accessible by computer system


500


. In other embodiments, other apparatus may be used such as a CD-ROM, a floppy disk, a hard disk, or other storage media.




In one embodiment, computer system


500


is housed in chassis


400


shown in FIG.


4


. In this embodiment, computer system


500


is coupled to hubs


410


and


420


and devices


412


,


414


,


422


, and


424


using ports


402


and


404


as shown in FIG.


4


. In other embodiments, computer system


500


may be included in other types of housings.




Referring to both FIG.


4


and

FIG. 5

, module


536


includes instructions that are configured to cause computer system


500


to detect the presence of peripheral devices on ports such as ports


402


,


404


,


418




a,




418




b,




428




a,


and


428




b


in computer system


500


in response to computer system


500


being booted up. Computer system


500


may boot in response to being powered up, i.e. turned on, or restarted. In the embodiment shown in

FIG. 5

, module


536


is included in BIOS


234


. In other embodiments, the software of module


536


may be included in a system firmware, an operating system, or other software configured to boot or reboot the computer system.




Indicator


532


is configured to store one or more values that identify one or more ports where one or more peripheral devices are found. Each value identifies a location of a port such as port


402


,


404


,


418




a,




418




b,




428




a,


or


428




b.






In response to booting or rebooting, computer system


500


executes instructions in BIOS


234


to identify and initialize components of computer system


500


including hubs


410


and


420


and devices


412


,


414


,


422


, and


424


. One of the functions performed by BIOS


234


includes detecting locations of hubs and devices coupled to computer system


500


. In the embodiment shown in

FIG. 5

, computer system


500


executes module


536


to perform this function. Module


536


causes indicator


532


to be read. Module


536


then causes one or more locations identified by indicator


532


to be checked for the presence of peripheral devices. If a particular peripheral device is present at the location identified by indicator


532


, then module


536


either continues checking for the presence of other peripheral devices on other ports or completes and returns control of computer system


500


to BIOS


234


.




If a device is not present at the location identified by indicator


532


, then module


536


causes another port to be checked for the presence of the device. In the embodiment shown in

FIG. 5

, module


536


causes a port not identified by indicator


532


to be checked. For example, if indicator


532


identifies port


428




a,


then module


536


causes another port such as port


428




b,




418




a,


or


418




b


to be checked. If the device is detected on port


418




b,


for example, then module


536


causes a memory location associated with indicator


532


to store a value that identifies port


418




b.






By replacing one or more values stored in indicator


532


, module


536


causes the identity of the ports where one or more devices were last detected to be saved. By saving the identity of the port, module


536


causes these last known ports to be checked for the presence of the devices in response to computer system


200


being powered up, restarted, booted, or rebooted, i.e. the next time module


536


executes.




In one embodiment, module


536


causes a port to be checked for the presence of a peripheral device by performing a port call to the port. To perform a port call, module


536


causes a signal to be sent to the port. If module


536


does not detect a response to the signal within a predetermined time period, i.e. the port call times out, then module


536


assumes that the peripheral device is not on the port and checks another port for the presence of the peripheral device. Module


536


continues to cause ports to be checked until it either detects the peripheral device or checks the set of ports where the peripheral device may be found. If the peripheral device is not found on any of the set of ports, then an error may be reported. After module


536


receives a response to the signal from a port that indicates the presence of the peripheral device, module


536


returns control of computer system


500


to BIOS


234


. In an embodiment where the peripheral device is a keyboard, module


536


may also cause a value associated with a port to be stored in a register in keyboard controller


222


. In other embodiments, the presence of a peripheral device on a port may be checked in other ways.




Module


536


may also cause computer system


500


to capture a peripheral search order based on a topology of busses and peripheral devices coupled to ports


402


and


404


of computer system


500


. In the process in which peripheral devices and hubs coupled to computer system


500


are detected, module


536


causes a peripheral search order, i.e. the sequential order that peripheral devices are detected by computer system


500


, to be detected and stored in a memory such as CMOS


230


or storage device


240


. In response to a subsequent execution of module


536


, module


536


may detect the stored peripheral search order and use the peripheral search order to detect the presence of one or more particular devices on one or more ports.




In one embodiment, port


402


and port


404


are Universal Serial Bus (USB) ports and connections


416


and


426


are USBs. In other embodiments, port


402


and port


404


may be other types of ports that are configured to operate in conjunction with a hub such as hub


410


or hub


420


and connections


416


an


426


may be other types of busses or connections.




In other embodiments, other types and numbers of peripheral devices and hubs may be coupled to ports


402


and


404


of computer system


500


. In particular, other hubs may be connected to one or more ports of hubs


410


and


420


.




As can be seen, the principal advantages of these embodiments are that they may reduce the amount of time it takes to boot a computer system. A computer system may check for a peripheral device in a location where the device was previously detected. In doing so, the computer system may more rapidly locate the peripheral device and reduce the time amount of time it takes to boot the computer system.




Although illustrative embodiments have been shown and described, a wide range of modification, change and substitution is contemplated in the foregoing disclosure and in some instances, some features of the embodiments may be employed without a corresponding use of other features. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the embodiments disclosed herein.



Claims
  • 1. A method performed by a computer system comprising:coupling the computer system to a first hub including a first port and to a second hub including a second port; reading a first indicator from a memory location; checking the first port associated with the first indicator for the presence of a peripheral device; in response to the peripheral device not being present on the first port, storing a second indicator associated with a second port in the memory location; and coupling a bus to the first hub and the computer system; wherein the computer system is for: detecting a peripheral search order associated with the bus; and storing the peripheral search order.
  • 2. The method of claim 1 wherein the peripheral device includes a keyboard.
  • 3. The method of claim 1, further comprising:checking the first port for the presence of the peripheral device by performing a port call to the first port.
  • 4. The method of claim 3, further comprising:detecting whether the peripheral device is present on the first port by determining whether the first port responds to the port call within a predetermined time period.
  • 5. The method of claim 1, further comprising:reading the first indicator from the memory location, the memory location including a bit.
  • 6. The method of claim 5 wherein the first indicator includes a first value of the bit and wherein the second indicator includes a second value of the bit.
  • 7. The method of claim 1, further comprising:reading the first indicator from the memory location in response to booting the computer system.
  • 8. A system comprising:a computer system coupled to a first hub including a first port and to a second hub including a second port; the computer system for: reading a first indicator from a memory location; checking a first port associated with the first indicator for the presence of a peripheral device; in response to the peripheral device not being present on the first port, storing a second indicator associated with a second port in the memory location; and a bus coupled to the first hub and the computer system; wherein the computer system is for: detecting a peripheral search order associated with the bus; and storing the peripheral search order.
  • 9. The system of claim 8, wherein the peripheral device includes a keyboard.
  • 10. The system of claim 8, wherein the computer system is for:checking the first port for the presence of the peripheral device by performing a port call to the first port.
  • 11. The system of claim 10, wherein the computer system is for:detecting whether the peripheral device is present on the first port by determining whether the first port responds to the port call within a predetermined time period.
  • 12. The system of claim 8, wherein the memory location includes a bit.
  • 13. The system of claim 12, wherein the first indicator includes a first value of the bit, and wherein the second indicator includes a second value of the bit.
  • 14. The system of claim 8, wherein the computer system is for:reading the first indicator from the memory location in response to the computer system being booted.
  • 15. A system comprising:a first hub that includes a first port; a second hub that includes a second port; a computer system coupled to the first hub and the second hub for: reading a first indicator from a memory location; checking the first port associated with the first indicator for the presence of a peripheral device; in response to the peripheral device not being present on the first port, storing a second indicator associated with the second port in the memory location; and a bus coupled to the first hub and the computer system; wherein the computer system is for: detecting a peripheral search order associated with the bus; and storing the peripheral search order.
  • 16. The system of claim 15, wherein the peripheral device includes a keyboard.
  • 17. The system of claim 15, wherein the computer system is for:checking the first port for the presence of the peripheral device by performing a port call to the first port.
  • 18. The system of claim 17, wherein the computer system is for:detecting whether the peripheral device is present on the first port by determining whether the first port responds to the port call within a predetermined time period.
  • 19. The system of claim 15, wherein the memory location includes a bit.
  • 20. The system of claim 19, wherein the first indicator includes a first value of the bit, and wherein the second indicator includes a second value of the bit.
  • 21. The system of claim 15, wherein the computer system is for:reading the first indicator from the memory location in response to the computer system being booted.
US Referenced Citations (13)
Number Name Date Kind
5014193 Garner et al. May 1991 A
5222228 Asprey Jun 1993 A
5790889 Witte Aug 1998 A
5905914 Sakai et al. May 1999 A
5909560 Kenny et al. Jun 1999 A
6101559 Schultz et al. Aug 2000 A
6141704 Huang Oct 2000 A
6178469 Hennessy et al. Jan 2001 B1
6311242 Falkenburg et al. Oct 2001 B1
6393507 Klein May 2002 B2
6473811 Onsen Oct 2002 B1
6487474 Goodman et al. Nov 2002 B1
6671831 Sartore et al. Dec 2003 B1