diff options
| -rw-r--r-- | arch/mips/bcm63xx/cpu.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/mips/bcm63xx/cpu.c b/arch/mips/bcm63xx/cpu.c index 8f0d6c7725ea..e3c1da59ea13 100644 --- a/arch/mips/bcm63xx/cpu.c +++ b/arch/mips/bcm63xx/cpu.c | |||
| @@ -228,17 +228,21 @@ void __init bcm63xx_cpu_init(void) | |||
| 228 | bcm63xx_irqs = bcm6345_irqs; | 228 | bcm63xx_irqs = bcm6345_irqs; |
| 229 | break; | 229 | break; |
| 230 | case CPU_BMIPS4350: | 230 | case CPU_BMIPS4350: |
| 231 | switch (read_c0_prid() & 0xf0) { | 231 | if ((read_c0_prid() & 0xf0) == 0x10) { |
| 232 | case 0x10: | ||
| 233 | expected_cpu_id = BCM6358_CPU_ID; | 232 | expected_cpu_id = BCM6358_CPU_ID; |
| 234 | bcm63xx_regs_base = bcm6358_regs_base; | 233 | bcm63xx_regs_base = bcm6358_regs_base; |
| 235 | bcm63xx_irqs = bcm6358_irqs; | 234 | bcm63xx_irqs = bcm6358_irqs; |
| 236 | break; | 235 | } else { |
| 237 | case 0x30: | 236 | /* all newer chips have the same chip id location */ |
| 238 | expected_cpu_id = BCM6368_CPU_ID; | 237 | u16 chip_id = bcm_readw(BCM_6368_PERF_BASE); |
| 239 | bcm63xx_regs_base = bcm6368_regs_base; | 238 | |
| 240 | bcm63xx_irqs = bcm6368_irqs; | 239 | switch (chip_id) { |
| 241 | break; | 240 | case BCM6368_CPU_ID: |
| 241 | expected_cpu_id = BCM6368_CPU_ID; | ||
| 242 | bcm63xx_regs_base = bcm6368_regs_base; | ||
| 243 | bcm63xx_irqs = bcm6368_irqs; | ||
| 244 | break; | ||
| 245 | } | ||
| 242 | } | 246 | } |
| 243 | break; | 247 | break; |
| 244 | } | 248 | } |
