diff options
Diffstat (limited to 'drivers/of/base.c')
-rw-r--r-- | drivers/of/base.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index ad8ac1a8af28..cd1ce7ab8517 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -420,13 +420,12 @@ static struct of_modalias_table of_modalias_table[] = { | |||
420 | * @len: Length of modalias value | 420 | * @len: Length of modalias value |
421 | * | 421 | * |
422 | * Based on the value of the compatible property, this routine will determine | 422 | * Based on the value of the compatible property, this routine will determine |
423 | * an appropriate modalias value for a particular device tree node. Three | 423 | * an appropriate modalias value for a particular device tree node. Two |
424 | * separate methods are used to derive a modalias value. | 424 | * separate methods are attempted to derive a modalias value. |
425 | * | 425 | * |
426 | * First method is to lookup the compatible value in of_modalias_table. | 426 | * First method is to lookup the compatible value in of_modalias_table. |
427 | * Second is to look for a "linux,<modalias>" entry in the compatible list | 427 | * Second is to strip off the manufacturer prefix from the first |
428 | * and used that for modalias. Third is to strip off the manufacturer | 428 | * compatible entry and use the remainder as modalias |
429 | * prefix from the first compatible entry and use the remainder as modalias | ||
430 | * | 429 | * |
431 | * This routine returns 0 on success | 430 | * This routine returns 0 on success |
432 | */ | 431 | */ |
@@ -449,21 +448,7 @@ int of_modalias_node(struct device_node *node, char *modalias, int len) | |||
449 | if (!compatible) | 448 | if (!compatible) |
450 | return -ENODEV; | 449 | return -ENODEV; |
451 | 450 | ||
452 | /* 2. search for linux,<modalias> entry */ | 451 | /* 2. take first compatible entry and strip manufacturer */ |
453 | p = compatible; | ||
454 | while (cplen > 0) { | ||
455 | if (!strncmp(p, "linux,", 6)) { | ||
456 | p += 6; | ||
457 | strlcpy(modalias, p, len); | ||
458 | return 0; | ||
459 | } | ||
460 | |||
461 | i = strlen(p) + 1; | ||
462 | p += i; | ||
463 | cplen -= i; | ||
464 | } | ||
465 | |||
466 | /* 3. take first compatible entry and strip manufacturer */ | ||
467 | p = strchr(compatible, ','); | 452 | p = strchr(compatible, ','); |
468 | if (!p) | 453 | if (!p) |
469 | return -ENODEV; | 454 | return -ENODEV; |