Linux Step By Steps
ISAPNP-Programming-Serial Number

UP

INTERFACE
ISOLATION
RECORDS
DECODES
REGISTERS


The 9 byte record provided by both serial isolation and at the start of a wake up to a specific card (see below) is encoded as follows

<four byte encoded id> <four byte serial number> checksum byte.

All values in PNP are presented to the interface least significant byte first (little endian)

struct serial_id
{
    struct encoded_id
    {
        short  encoded_model_name; // encoded ascii
        short  product_number;               // nnn.rev
    }encoded_id;
    long serial_number; // 0xFFFFFFFF     is permissible as a generic number
    char checksum;
};

the product number consist of a 3 field product it and rev level

the word 00E4 means

vendor product 00E revision 4

The encoded_model_name is compressed ascii using 15 bits to encode 3 ascii characters as follows

43210   98765   43210
xxxxx : xxxxx : xxxxx

Bit 15 is not used.

1:1:1 in this field indicates a card by the name of AAA
26:26:26 in this field indicates ZZZ

Output from a typical soundblaster pnp device is as follows

0E8C 00E4 D6E31B00  48

and is decoded as

"CTL 00E rev4, Serial Number 1827798, checksum 0x48"
 

The four byte encoded_id structure defined above, is also used in other information records as described below. Note, not the data, the structure is used for similar purpose in other information records recieved from the interface.