Home | History | Annotate | Download | only in bus
      1 #include <stdint.h>
      2 #include <stdio.h>
      3 #include <byteswap.h>
      4 #include <gpxe/isa_ids.h>
      5 
      6 /*
      7  * EISA and ISAPnP IDs are actually mildly human readable, though in a
      8  * somewhat brain-damaged way.
      9  *
     10  */
     11 char * isa_id_string ( unsigned int vendor, unsigned int product ) {
     12 	static char buf[7];
     13 	int i;
     14 
     15 	/* Vendor ID is a compressed ASCII string */
     16 	vendor = bswap_16 ( vendor );
     17 	for ( i = 2 ; i >= 0 ; i-- ) {
     18 		buf[i] = ( 'A' - 1 + ( vendor & 0x1f ) );
     19 		vendor >>= 5;
     20 	}
     21 
     22 	/* Product ID is a 4-digit hex string */
     23 	sprintf ( &buf[3], "%04x", bswap_16 ( product ) );
     24 
     25 	return buf;
     26 }
     27