diff options
author | Lennert Buytenhek <buytenh@wantstofly.org> | 2008-08-09 15:17:27 +0200 |
---|---|---|
committer | Lennert Buytenhek <buytenh@marvell.com> | 2008-08-09 15:17:27 +0200 |
commit | ce72e36ed1a57ba086270039c7d6fac9bf1c5fbc (patch) | |
tree | 3fae8df5f9f582f46c8d25f1b6a98fadb27f76d8 /arch | |
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')
-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 b44f26d7613..8f2146bd8a9 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) *dev_name = "MV88F5281-D2"; } else if (*rev == MV88F5281_REV_D1) { *dev_name = "MV88F5281-D1"; + } else if (*rev == MV88F5281_REV_D0) { + *dev_name = "MV88F5281-D0"; } else { *dev_name = "MV88F5281-Rev-Unsupported"; } @@ -416,6 +418,15 @@ void __init orion5x_init(void) * Setup Orion address map */ orion5x_setup_cpu_mbus_bridge(); + + /* + * Don't issue "Wait for Interrupt" instruction if we are + * running on D0 5281 silicon. + */ + if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) { + printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n"); + disable_hlt(); + } } /* diff --git a/arch/arm/mach-orion5x/include/mach/orion5x.h b/arch/arm/mach-orion5x/include/mach/orion5x.h index f52a7d65bec..77978dbd5a9 100644 --- a/arch/arm/mach-orion5x/include/mach/orion5x.h +++ b/arch/arm/mach-orion5x/include/mach/orion5x.h @@ -73,6 +73,7 @@ #define MV88F5182_REV_A2 2 /* Orion-2 (88F5281) */ #define MV88F5281_DEV_ID 0x5281 +#define MV88F5281_REV_D0 4 #define MV88F5281_REV_D1 5 #define MV88F5281_REV_D2 6 |