You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

isa_ids.h 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef ISA_IDS_H
  2. #define ISA_IDS_H
  3. /*
  4. * This file defines IDs as used by ISAPnP and EISA devices. These
  5. * IDs have the format:
  6. *
  7. * vendor byte 0 bit 7 must be zero
  8. * bits 6-2 first vendor char in compressed ASCII
  9. * bits 1-0 second vendor char in compressed ASCII (bits 4-3)
  10. * byte 1 bits 7-5 second vendor char in compressed ASCII (bits 2-0)
  11. * bits 4-0 third vendor char in compressed ASCII
  12. * product byte 0 bits 7-4 first hex digit of product number
  13. * bits 3-0 second hex digit of product number
  14. * byte 1 bits 7-4 third hex digit of product number
  15. * bits 3-0 hex digit of revision level
  16. *
  17. * ISA IDs are always expressed in little-endian order, even though
  18. * the underlying "meaning" is big-endian.
  19. */
  20. #include <byteswap.h>
  21. /*
  22. * Construct a vendor ID from three ASCII characters
  23. *
  24. */
  25. #define ISA_VENDOR( a, b, c ) \
  26. bswap_16 ( ( ( ( (a) - 'A' + 1 ) & 0x1f ) << 10 ) | \
  27. ( ( ( (b) - 'A' + 1 ) & 0x1f ) << 5 ) | \
  28. ( ( ( (c) - 'A' + 1 ) & 0x1f ) << 0 ) )
  29. #define ISAPNP_VENDOR( a, b, c ) ISA_VENDOR ( a, b, c )
  30. #define EISA_VENDOR( a, b, c ) ISA_VENDOR ( a, b, c )
  31. #define GENERIC_ISAPNP_VENDOR ISAPNP_VENDOR ( 'P','N','P' )
  32. /*
  33. * Extract product ID and revision from combined product field
  34. *
  35. */
  36. #define ISA_PROD_ID_MASK ( 0xf0ff )
  37. #define ISA_PROD_ID(product) ( (product) & ISA_PROD_ID_MASK )
  38. #define ISA_PROD_REV(product) ( ( (product) & ~ISA_PROD_ID_MASK ) >> 8 )
  39. /* Functions in isa_ids.c */
  40. extern char * isa_id_string ( unsigned int vendor, unsigned int product );
  41. #endif /* ISA_IDS_H */