Commit d5608bbf authored by Linus Walleij's avatar Linus Walleij

ARM: ux500: update ASIC detection for U5500

This adds a few CPU identification functions for the U5500 variants.
Contains portions of code written by Rabin Vincent.

Cc: Rabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 41c34ae4
...@@ -10,20 +10,21 @@ ...@@ -10,20 +10,21 @@
#ifndef __MACH_HARDWARE_H #ifndef __MACH_HARDWARE_H
#define __MACH_HARDWARE_H #define __MACH_HARDWARE_H
/* macros to get at IO space when running virtually /*
* Macros to get at IO space when running virtually
* We dont map all the peripherals, let ioremap do * We dont map all the peripherals, let ioremap do
* this for us. We map only very basic peripherals here. * this for us. We map only very basic peripherals here.
*/ */
#define U8500_IO_VIRTUAL 0xf0000000 #define U8500_IO_VIRTUAL 0xf0000000
#define U8500_IO_PHYSICAL 0xa0000000 #define U8500_IO_PHYSICAL 0xa0000000
/* this macro is used in assembly, so no cast */ /* This macro is used in assembly, so no cast */
#define IO_ADDRESS(x) \ #define IO_ADDRESS(x) \
(((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + U8500_IO_VIRTUAL)
/* typesafe io address */ /* typesafe io address */
#define __io_address(n) __io(IO_ADDRESS(n)) #define __io_address(n) __io(IO_ADDRESS(n))
/* used by some plat-nomadik code */ /* Used by some plat-nomadik code */
#define io_p2v(n) __io_address(n) #define io_p2v(n) __io_address(n)
#include <mach/db8500-regs.h> #include <mach/db8500-regs.h>
...@@ -36,6 +37,5 @@ extern void __iomem *_PRCMU_BASE; ...@@ -36,6 +37,5 @@ extern void __iomem *_PRCMU_BASE;
#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x) #define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
#endif #endif /* __ASSEMBLY__ */
#endif /* __MACH_HARDWARE_H */ #endif /* __MACH_HARDWARE_H */
...@@ -46,6 +46,30 @@ static inline bool __attribute_const__ cpu_is_u5500(void) ...@@ -46,6 +46,30 @@ static inline bool __attribute_const__ cpu_is_u5500(void)
return dbx500_partnumber() == 0x5500; return dbx500_partnumber() == 0x5500;
} }
/*
* 5500 revisions
*/
static inline bool __attribute_const__ cpu_is_u5500v1(void)
{
return cpu_is_u5500() && (dbx500_revision() & 0xf0) == 0xA0;
}
static inline bool __attribute_const__ cpu_is_u5500v2(void)
{
return (dbx500_id.revision & 0xf0) == 0xB0;
}
static inline bool __attribute_const__ cpu_is_u5500v20(void)
{
return cpu_is_u5500() && ((dbx500_revision() & 0xf0) == 0xB0);
}
static inline bool __attribute_const__ cpu_is_u5500v21(void)
{
return cpu_is_u5500() && (dbx500_revision() == 0xB1);
}
/* /*
* 8500 revisions * 8500 revisions
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment