diff options
Diffstat (limited to 'arch/mips/alchemy')
-rw-r--r-- | arch/mips/alchemy/devboards/db1200.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/arch/mips/alchemy/devboards/db1200.c b/arch/mips/alchemy/devboards/db1200.c index 1181241c5052..67219913f09f 100644 --- a/arch/mips/alchemy/devboards/db1200.c +++ b/arch/mips/alchemy/devboards/db1200.c | |||
@@ -66,19 +66,33 @@ static int __init detect_board(void) | |||
66 | { | 66 | { |
67 | int bid; | 67 | int bid; |
68 | 68 | ||
69 | /* try the PB1200 first */ | 69 | /* try the DB1200 first */ |
70 | bcsr_init(DB1200_BCSR_PHYS_ADDR, | ||
71 | DB1200_BCSR_PHYS_ADDR + DB1200_BCSR_HEXLED_OFS); | ||
72 | if (BCSR_WHOAMI_DB1200 == BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI))) { | ||
73 | unsigned short t = bcsr_read(BCSR_HEXLEDS); | ||
74 | bcsr_write(BCSR_HEXLEDS, ~t); | ||
75 | if (bcsr_read(BCSR_HEXLEDS) != t) { | ||
76 | bcsr_write(BCSR_HEXLEDS, t); | ||
77 | return 0; | ||
78 | } | ||
79 | } | ||
80 | |||
81 | /* okay, try the PB1200 then */ | ||
70 | bcsr_init(PB1200_BCSR_PHYS_ADDR, | 82 | bcsr_init(PB1200_BCSR_PHYS_ADDR, |
71 | PB1200_BCSR_PHYS_ADDR + PB1200_BCSR_HEXLED_OFS); | 83 | PB1200_BCSR_PHYS_ADDR + PB1200_BCSR_HEXLED_OFS); |
72 | bid = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI)); | 84 | bid = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI)); |
73 | if ((bid == BCSR_WHOAMI_PB1200_DDR1) || | 85 | if ((bid == BCSR_WHOAMI_PB1200_DDR1) || |
74 | (bid == BCSR_WHOAMI_PB1200_DDR2)) | 86 | (bid == BCSR_WHOAMI_PB1200_DDR2)) { |
75 | return 0; | 87 | unsigned short t = bcsr_read(BCSR_HEXLEDS); |
88 | bcsr_write(BCSR_HEXLEDS, ~t); | ||
89 | if (bcsr_read(BCSR_HEXLEDS) != t) { | ||
90 | bcsr_write(BCSR_HEXLEDS, t); | ||
91 | return 0; | ||
92 | } | ||
93 | } | ||
76 | 94 | ||
77 | /* okay, try the DB1200 then */ | 95 | return 1; /* it's neither */ |
78 | bcsr_init(DB1200_BCSR_PHYS_ADDR, | ||
79 | DB1200_BCSR_PHYS_ADDR + DB1200_BCSR_HEXLED_OFS); | ||
80 | bid = BCSR_WHOAMI_BOARD(bcsr_read(BCSR_WHOAMI)); | ||
81 | return bid == BCSR_WHOAMI_DB1200 ? 0 : 1; | ||
82 | } | 96 | } |
83 | 97 | ||
84 | void __init board_setup(void) | 98 | void __init board_setup(void) |