diff options
Diffstat (limited to 'drivers/pnp/pnpbios/rsparser.c')
-rw-r--r-- | drivers/pnp/pnpbios/rsparser.c | 26 |
1 files changed, 3 insertions, 23 deletions
diff --git a/drivers/pnp/pnpbios/rsparser.c b/drivers/pnp/pnpbios/rsparser.c index dbc88412c12e..948a661280d7 100644 --- a/drivers/pnp/pnpbios/rsparser.c +++ b/drivers/pnp/pnpbios/rsparser.c | |||
@@ -494,32 +494,12 @@ len_err: | |||
494 | * Compatible Device IDs | 494 | * Compatible Device IDs |
495 | */ | 495 | */ |
496 | 496 | ||
497 | #define HEX(id,a) hex[((id)>>a) & 15] | ||
498 | #define CHAR(id,a) (0x40 + (((id)>>a) & 31)) | ||
499 | |||
500 | void pnpid32_to_pnpid(u32 id, char *str) | ||
501 | { | ||
502 | const char *hex = "0123456789abcdef"; | ||
503 | |||
504 | id = be32_to_cpu(id); | ||
505 | str[0] = CHAR(id, 26); | ||
506 | str[1] = CHAR(id, 21); | ||
507 | str[2] = CHAR(id, 16); | ||
508 | str[3] = HEX(id, 12); | ||
509 | str[4] = HEX(id, 8); | ||
510 | str[5] = HEX(id, 4); | ||
511 | str[6] = HEX(id, 0); | ||
512 | str[7] = '\0'; | ||
513 | } | ||
514 | |||
515 | #undef CHAR | ||
516 | #undef HEX | ||
517 | |||
518 | static unsigned char *pnpbios_parse_compatible_ids(unsigned char *p, | 497 | static unsigned char *pnpbios_parse_compatible_ids(unsigned char *p, |
519 | unsigned char *end, | 498 | unsigned char *end, |
520 | struct pnp_dev *dev) | 499 | struct pnp_dev *dev) |
521 | { | 500 | { |
522 | int len, tag; | 501 | int len, tag; |
502 | u32 eisa_id; | ||
523 | char id[8]; | 503 | char id[8]; |
524 | struct pnp_id *dev_id; | 504 | struct pnp_id *dev_id; |
525 | 505 | ||
@@ -549,8 +529,8 @@ static unsigned char *pnpbios_parse_compatible_ids(unsigned char *p, | |||
549 | case SMALL_TAG_COMPATDEVID: /* compatible ID */ | 529 | case SMALL_TAG_COMPATDEVID: /* compatible ID */ |
550 | if (len != 4) | 530 | if (len != 4) |
551 | goto len_err; | 531 | goto len_err; |
552 | pnpid32_to_pnpid(p[1] | p[2] << 8 | p[3] << 16 | p[4] << | 532 | eisa_id = p[1] | p[2] << 8 | p[3] << 16 | p[4] << 24; |
553 | 24, id); | 533 | pnp_eisa_id_to_string(eisa_id & PNP_EISA_ID_MASK, id); |
554 | dev_id = pnp_add_id(dev, id); | 534 | dev_id = pnp_add_id(dev, id); |
555 | if (!dev_id) | 535 | if (!dev_id) |
556 | return NULL; | 536 | return NULL; |