| #ifndef ISA_IDS_H |
| #define ISA_IDS_H |
| |
| /* |
| * This file defines IDs as used by ISAPnP and EISA devices. These |
| * IDs have the format: |
| * |
| * vendor byte 0 bit 7 must be zero |
| * bits 6-2 first vendor char in compressed ASCII |
| * bits 1-0 second vendor char in compressed ASCII (bits 4-3) |
| * byte 1 bits 7-5 second vendor char in compressed ASCII (bits 2-0) |
| * bits 4-0 third vendor char in compressed ASCII |
| * product byte 0 bits 7-4 first hex digit of product number |
| * bits 3-0 second hex digit of product number |
| * byte 1 bits 7-4 third hex digit of product number |
| * bits 3-0 hex digit of revision level |
| * |
| * ISA IDs are always expressed in little-endian order, even though |
| * the underlying "meaning" is big-endian. |
| */ |
| |
| FILE_LICENCE ( GPL2_OR_LATER ); |
| |
| #include <byteswap.h> |
| |
| /* |
| * Construct a vendor ID from three ASCII characters |
| * |
| */ |
| #define ISA_VENDOR( a, b, c ) \ |
| bswap_16 ( ( ( ( (a) - 'A' + 1 ) & 0x1f ) << 10 ) | \ |
| ( ( ( (b) - 'A' + 1 ) & 0x1f ) << 5 ) | \ |
| ( ( ( (c) - 'A' + 1 ) & 0x1f ) << 0 ) ) |
| |
| #define ISAPNP_VENDOR( a, b, c ) ISA_VENDOR ( a, b, c ) |
| #define EISA_VENDOR( a, b, c ) ISA_VENDOR ( a, b, c ) |
| |
| #define GENERIC_ISAPNP_VENDOR ISAPNP_VENDOR ( 'P','N','P' ) |
| |
| /* |
| * Extract product ID and revision from combined product field |
| * |
| */ |
| #define ISA_PROD_ID_MASK ( 0xf0ff ) |
| #define ISA_PROD_ID(product) ( (product) & ISA_PROD_ID_MASK ) |
| #define ISA_PROD_REV(product) ( ( (product) & ~ISA_PROD_ID_MASK ) >> 8 ) |
| |
| /* Functions in isa_ids.c */ |
| extern char * isa_id_string ( unsigned int vendor, unsigned int product ); |
| |
| #endif /* ISA_IDS_H */ |