diff options
author | Rafał Miłecki <zajec5@gmail.com> | 2015-06-21 09:25:49 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2015-06-21 16:19:59 -0400 |
commit | 590605c6bc31d5cbfcb3844ef98eb10ff7ce24c3 (patch) | |
tree | 263889e974ef3faa61d793f1de7ddb705cb1e95c /arch | |
parent | 589de416fb07aaea94d27f71c31a9bb02af2e54c (diff) |
MIPS: BCM47xx: Simplify handling SPROM revisions
After the big SPROM cleanup moving code to the bcm47xx_sprom_fill_auto
we ended up with few tiny functions, two of them being identical. Let's
get rid of these [12]-liners.
This also stops extracting higher SPROM revisions as revision 1. Now we
have that function nicely handling revisions we don't need it.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Patchwork: https://patchwork.linux-mips.org/patch/10569/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/mips/bcm47xx/sprom.c | 53 |
1 files changed, 9 insertions, 44 deletions
diff --git a/arch/mips/bcm47xx/sprom.c b/arch/mips/bcm47xx/sprom.c index b0d62e7e7af7..2d5c7a7f24bb 100644 --- a/arch/mips/bcm47xx/sprom.c +++ b/arch/mips/bcm47xx/sprom.c | |||
@@ -200,6 +200,9 @@ static void bcm47xx_sprom_fill_auto(struct ssb_sprom *sprom, | |||
200 | const char *pre = prefix; | 200 | const char *pre = prefix; |
201 | bool fb = fallback; | 201 | bool fb = fallback; |
202 | 202 | ||
203 | /* Broadcom extracts it for rev 8+ but it was found on 2 and 4 too */ | ||
204 | ENTRY(0xfffffffe, u16, pre, "devid", dev_id, 0, fallback); | ||
205 | |||
203 | ENTRY(0xfffffffe, u16, pre, "boardrev", board_rev, 0, true); | 206 | ENTRY(0xfffffffe, u16, pre, "boardrev", board_rev, 0, true); |
204 | ENTRY(0xfffffffe, u32, pre, "boardflags", boardflags, 0, fb); | 207 | ENTRY(0xfffffffe, u32, pre, "boardflags", boardflags, 0, fb); |
205 | ENTRY(0xfffffff0, u32, pre, "boardflags2", boardflags2, 0, fb); | 208 | ENTRY(0xfffffff0, u32, pre, "boardflags2", boardflags2, 0, fb); |
@@ -412,27 +415,6 @@ static void bcm47xx_sprom_fill_auto(struct ssb_sprom *sprom, | |||
412 | } | 415 | } |
413 | #undef ENTRY /* It's specififc, uses local variable, don't use it (again). */ | 416 | #undef ENTRY /* It's specififc, uses local variable, don't use it (again). */ |
414 | 417 | ||
415 | static void bcm47xx_fill_sprom_r1234589(struct ssb_sprom *sprom, | ||
416 | const char *prefix, bool fallback) | ||
417 | { | ||
418 | nvram_read_u16(prefix, NULL, "devid", &sprom->dev_id, 0, fallback); | ||
419 | nvram_read_alpha2(prefix, "ccode", sprom->alpha2, fallback); | ||
420 | } | ||
421 | |||
422 | static void bcm47xx_fill_sprom_r3(struct ssb_sprom *sprom, const char *prefix, | ||
423 | bool fallback) | ||
424 | { | ||
425 | nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time, | ||
426 | &sprom->leddc_off_time, fallback); | ||
427 | } | ||
428 | |||
429 | static void bcm47xx_fill_sprom_r4589(struct ssb_sprom *sprom, | ||
430 | const char *prefix, bool fallback) | ||
431 | { | ||
432 | nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time, | ||
433 | &sprom->leddc_off_time, fallback); | ||
434 | } | ||
435 | |||
436 | static void bcm47xx_fill_sprom_path_r4589(struct ssb_sprom *sprom, | 418 | static void bcm47xx_fill_sprom_path_r4589(struct ssb_sprom *sprom, |
437 | const char *prefix, bool fallback) | 419 | const char *prefix, bool fallback) |
438 | { | 420 | { |
@@ -589,39 +571,22 @@ void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix, | |||
589 | 571 | ||
590 | nvram_read_u8(prefix, NULL, "sromrev", &sprom->revision, 0, fallback); | 572 | nvram_read_u8(prefix, NULL, "sromrev", &sprom->revision, 0, fallback); |
591 | 573 | ||
574 | /* Entries requiring custom functions */ | ||
575 | nvram_read_alpha2(prefix, "ccode", sprom->alpha2, fallback); | ||
576 | if (sprom->revision >= 3) | ||
577 | nvram_read_leddc(prefix, "leddc", &sprom->leddc_on_time, | ||
578 | &sprom->leddc_off_time, fallback); | ||
579 | |||
592 | switch (sprom->revision) { | 580 | switch (sprom->revision) { |
593 | case 1: | ||
594 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
595 | break; | ||
596 | case 2: | ||
597 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
598 | break; | ||
599 | case 3: | ||
600 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
601 | bcm47xx_fill_sprom_r3(sprom, prefix, fallback); | ||
602 | break; | ||
603 | case 4: | 581 | case 4: |
604 | case 5: | 582 | case 5: |
605 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
606 | bcm47xx_fill_sprom_r4589(sprom, prefix, fallback); | ||
607 | bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); | 583 | bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); |
608 | bcm47xx_fill_sprom_path_r45(sprom, prefix, fallback); | 584 | bcm47xx_fill_sprom_path_r45(sprom, prefix, fallback); |
609 | break; | 585 | break; |
610 | case 8: | 586 | case 8: |
611 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
612 | bcm47xx_fill_sprom_r4589(sprom, prefix, fallback); | ||
613 | bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); | ||
614 | break; | ||
615 | case 9: | 587 | case 9: |
616 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
617 | bcm47xx_fill_sprom_r4589(sprom, prefix, fallback); | ||
618 | bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); | 588 | bcm47xx_fill_sprom_path_r4589(sprom, prefix, fallback); |
619 | break; | 589 | break; |
620 | default: | ||
621 | pr_warn("Unsupported SPROM revision %d detected. Will extract v1\n", | ||
622 | sprom->revision); | ||
623 | sprom->revision = 1; | ||
624 | bcm47xx_fill_sprom_r1234589(sprom, prefix, fallback); | ||
625 | } | 590 | } |
626 | 591 | ||
627 | bcm47xx_sprom_fill_auto(sprom, prefix, fallback); | 592 | bcm47xx_sprom_fill_auto(sprom, prefix, fallback); |