Abstract:
At system power on, a query is sent from a PCI or host-based controller to an attached codec for the vendor specific identification code associated with that codec. The PCI/host controller then sets its PCI vendor and subvendor ID&#39;s to match the specific system comprised of the controller and codec devices. That vendor specific identification code is then utilized within the PCI enumeration process to search for the specific modem driver associated with that codec.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     The present application is related to U.S. patent application Ser. No. 09/498,156, entitled “Virtual Rom For Device Enumeration,” which is hereby incorporated by reference herein. 
     TECHNICAL FIELD 
     The present invention relates in general to data processing systems, and in particular, to peripheral devices used within such data processing systems. 
     BACKGROUND INFORMATION 
     Modems are now a required component in a Windows-based personal computer (“PC”) according to Microsoft&#39;s PC99 specification. Given the increase in processing speed in PC&#39;s, the modem function is being largely implemented in software running on the PC processor under the Windows operating system. This is done in order to continue reducing the cost of the modem component and to provide increased flexibility of software upgrades. 
     The architecture of the software consists of driver software and a minimal hardware set. The hardware provides an interface to the host computer memory and to the analog phone line. An industry standard has been provided that defines the interface between the driver software and the hardware for soft modems. This standard is the Intel AC97 specification. This specifies a common hardware interface to any soft modem drivers. Given that the PC architecture is standardized and now the modem hardware is standardized, all that remains proprietary is the actual modem software. The bulk of the intellectual property for the soft modem is contained in the soft modem driver. Given that modems are required equipment for PC99 compliant PC&#39;s, and the modem is now essentially software, there is a risk of piracy for the vendors of the soft modem intellectual property. A typical business model for the soft modem company is based on royalties per copy. The problem is how to track the proliferation of copies of the soft modem drivers to account for royalty disbursements. 
     Therefore, what is needed in the art is a solution for how to track the number of PC&#39;s that are utilizing a soft modem functionality. As a result, there is a need for a technique for authentication before the driver software will perform the soft modem function on a given codec (coder/decoder). 
     SUMMARY OF THE INVENTION 
     The present invention addresses the foregoing need by providing a process for identifying a soft modem interface for an identification code and then setting a vendor ID in the computer PCI configuration space. This happens during the BIOS plug and play (“PnP”) enumeration process, before the operating system becomes available. The authentication block performs two functions that enable it to authenticate a codec. The first step is a codec query protocol that reads a hidden ID from an unpublished register within the codec. The second half of the process is to use the characteristics of the device itself as a means of identification. 
     The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which: 
         FIG. 1  illustrates an embodiment of the present invention; 
         FIG. 2  illustrates a flow diagram in accordance with the present invention; and 
         FIG. 3  illustrates a data processing system configured in accordance with the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, numerous specific details are set forth such as specific peripheral devices, etc. to provide a thorough understanding of the present invention. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In other instances, well-known circuits have been shown in block diagram form in order not to obscure the present invention in unnecessary detail. For the most part, details concerning timing considerations and the like have been omitted in as much as such details are not necessary to obtain a complete understanding of the present invention and are within the skills of persons of ordinary skill in the relevant art. 
     Refer now to the drawings wherein depicted elements are not necessarily shown to scale and wherein like or similar elements are designated by the same reference numeral through the several views. 
     The present invention is implemented with respect to use of a data processing system, and a PCI (Peripheral Component Interconnect) bus technology. Since there are many references regarding the PCI bus and its implementation of plug-n-play (PnP) capabilities, no further discussion is provided. Furthermore, the present invention pertains to enumeration of peripheral devices, which is discussed in the cross-reference related application previously incorporated by reference. 
     Referring to  FIG. 3 , there is illustrated a PC operating system and hardware  313  configured in accordance with the present invention having central processing unit (CPU)  310 , such as a conventional microprocessor, and a number of other units interconnected via system bus  312 . Data processing system  313  includes random access memory (RAM)  314 , read only memory (ROM)  316 , and input/output (I/O) adapter  318  for connecting peripheral devices such as disk units  320  and tape drives  340  to bus  312 , user interface adapter  322  for connecting keyboard  324 , mouse  326 , and/or other user interface devices such as a touch screen device (not shown) to bus  312 , communication adapter  334  for connecting data processing system  313  to a data processing network, and display adapter  336  for connecting bus  312  to display device  338 . CPU  310  may include other circuitry not shown herein, which will include circuitry commonly found within a microprocessor, e.g., execution unit, bus interface unit, arithmetic logic unit, etc. CPU  310  may also reside on a single integrated circuit. 
     Coupled to system  313  via a PCI bus  103  is PCI board  100 , which includes a PCI controller with V.90 lift logic  102  and one or more vendor specific codecs  104  coupled to the controller  102  and to an RJ11 connector  105 , as illustrated in  FIG. 1 . The soft modem application/driver  101  runs on top of the operating system  313 . 
     Referring to  FIGS. 1 and 2 , the system  313  is powered on in step  201 . Next, in step  202 , an initial codec query procedure is implemented whereby a state machine, which is implemented within the controller  102 , will query the codec  104  for its unique identifier code (product ID) using AC97 transactions. This unique identifier code is in an addressable register  106  within the codec  104 . This product ID code is the vendor specific ID appointed to the codec manufacturer by the PCI committee, which is an industry consortium that assigns numbers so that a driver or operating system can read this vendor specific product ID for identifying the codec&#39;s manufacturer. 
     Thereafter in step  203 , this product ID code is then placed in a temporary buffer within controller  102 . It should be noted the controller  102  could be a stand alone PCI device or a PCI controller integrated into other core logic devices. 
     There are several possible mechanisms besides a state machine within controller  102  that may be implemented to read the product code  106 . One alternative is to embed a small program within a ROM on the codec  104 , which will include some executable code to read the product ID code  106  into a buffer in controller  102 . 
     In step  204 , the product ID code is then compared to a table of such codes to determine the VENDOR_ID needed for configuring the codec  104 . An address register that is used by the AC97 controller  102  is set with the location of the configuration address space for the VENDOR_ID. The state machine will then copy the VENDOR_ID into this address register, which will be used later for enumeration of the codec  104 . 
     Thereafter, in step  205 , the BIOS will enumerate the PCI bus and build a table for later use by the Windows operating system. The table will identify required drivers by the VENDOR_ID for each PCI device  104 . This is the standard PCI enumeration cycle, whereby the VENDOR_ID is used to select a modem driver  101  created specifically for the codec  104 . If the driver cannot be found, a dialog box can be programmed to pop up and ask the user for the specific driver software. In this way, a vendor of driver software can be ensured that, a driver cannot simply be copied without also needing the hardware (codec) needed by the driver  101 . 
     The present invention is distinct from the prior art in that the prior art hard codes the VENDOR_ID&#39;s as part of the manufacturing process of the PCI bus. 
     The effect of the present invention is to authenticate a vendor specific codec before the soft modem driver will provide the modem function to the PC. This ensures that copies of the soft modem driver can be tied to the sales of vendor specific codecs, thereby providing a hindrance to software piracy. This system also allows system manufacturers to use multiple software/codec vendors by providing the required configuration information to the system in a transparent manner. This simplifies the design process, lowering costs and complexity to the original equipment manufacturers and designers. 
     Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims.