diff options
author | Lennert Buytenhek <buytenh@wantstofly.org> | 2008-08-09 09:17:27 -0400 |
---|---|---|
committer | Lennert Buytenhek <buytenh@marvell.com> | 2008-08-09 09:17:27 -0400 |
commit | ce72e36ed1a57ba086270039c7d6fac9bf1c5fbc (patch) | |
tree | 3fae8df5f9f582f46c8d25f1b6a98fadb27f76d8 /arch/arm/mach-orion5x | |
parent | 6f088f1d215be5250582b974f83f0e3aa6ad3a28 (diff) |
[ARM] Orion: support D0 5281 silicon
On D0 5281 SoCs, we need to disable the wait-for-interrupt
instruction due to an erratum.
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: Nicolas Pitre <nico@marvell.com>
Acked-by: Martin Michlmayr <tbm@cyrius.com>
Diffstat (limited to 'arch/arm/mach-orion5x')
-rw-r--r-- | arch/arm/mach-orion5x/common.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-orion5x/include/mach/orion5x.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index b44f26d7613b..8f2146bd8a94 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c | |||
@@ -382,6 +382,8 @@ static void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name) | |||
382 | *dev_name = "MV88F5281-D2"; | 382 | *dev_name = "MV88F5281-D2"; |
383 | } else if (*rev == MV88F5281_REV_D1) { | 383 | } else if (*rev == MV88F5281_REV_D1) { |
384 | *dev_name = "MV88F5281-D1"; | 384 | *dev_name = "MV88F5281-D1"; |
385 | } else if (*rev == MV88F5281_REV_D0) { | ||
386 | *dev_name = "MV88F5281-D0"; | ||
385 | } else { | 387 | } else { |
386 | *dev_name = "MV88F5281-Rev-Unsupported"; | 388 | *dev_name = "MV88F5281-Rev-Unsupported"; |
387 | } | 389 | } |
@@ -416,6 +418,15 @@ void __init orion5x_init(void) | |||
416 | * Setup Orion address map | 418 | * Setup Orion address map |
417 | */ | 419 | */ |
418 | orion5x_setup_cpu_mbus_bridge(); | 420 | orion5x_setup_cpu_mbus_bridge(); |
421 | |||
422 | /* | ||
423 | * Don't issue "Wait for Interrupt" instruction if we are | ||
424 | * running on D0 5281 silicon. | ||
425 | */ | ||
426 | if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) { | ||
427 | printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n"); | ||
428 | disable_hlt(); | ||
429 | } | ||
419 | } | 430 | } |
420 | 431 | ||
421 | /* | 432 | /* |
diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h index f52a7d65bec2..77978dbd5a92 100644 --- a/arch/arm/mach-orion5x/include/mach/orion5x.h +++ b/arch/arm/mach-orion5x/include/mach/orion5x.h | |||
@@ -73,6 +73,7 @@ | |||
73 | #define MV88F5182_REV_A2 2 | 73 | #define MV88F5182_REV_A2 2 |
74 | /* Orion-2 (88F5281) */ | 74 | /* Orion-2 (88F5281) */ |
75 | #define MV88F5281_DEV_ID 0x5281 | 75 | #define MV88F5281_DEV_ID 0x5281 |
76 | #define MV88F5281_REV_D0 4 | ||
76 | #define MV88F5281_REV_D1 5 | 77 | #define MV88F5281_REV_D1 5 |
77 | #define MV88F5281_REV_D2 6 | 78 | #define MV88F5281_REV_D2 6 |
78 | 79 | ||