Commit 505ed6fd authored by Petr Štetiar's avatar Petr Štetiar Committed by Russell King

ARM: 6967/1: ep93xx: ts72xx: fix board model detection

Fix the obvious error in board detection logic, because according to the TS's
manual, the model is stored in the least three significant bits. For example
the byte read on my ts-7300 is 0x23 and the detection then fails.

Cc: Ryan Mallon <ryan@bluewatersys.com>
Acked-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: default avatarPetr Štetiar <ynezz@true.cz>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 2a004c68
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* TS72xx memory map: * TS72xx memory map:
* *
* virt phys size * virt phys size
* febff000 22000000 4K model number register * febff000 22000000 4K model number register (bits 0-2)
* febfe000 22400000 4K options register * febfe000 22400000 4K options register
* febfd000 22800000 4K options register #2 * febfd000 22800000 4K options register #2
* febf9000 10800000 4K TS-5620 RTC index register * febf9000 10800000 4K TS-5620 RTC index register
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#define TS72XX_MODEL_TS7260 0x02 #define TS72XX_MODEL_TS7260 0x02
#define TS72XX_MODEL_TS7300 0x03 #define TS72XX_MODEL_TS7300 0x03
#define TS72XX_MODEL_TS7400 0x04 #define TS72XX_MODEL_TS7400 0x04
#define TS72XX_MODEL_MASK 0x07
#define TS72XX_OPTIONS_PHYS_BASE 0x22400000 #define TS72XX_OPTIONS_PHYS_BASE 0x22400000
...@@ -53,29 +54,34 @@ ...@@ -53,29 +54,34 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
static inline int ts72xx_model(void)
{
return __raw_readb(TS72XX_MODEL_VIRT_BASE) & TS72XX_MODEL_MASK;
}
static inline int board_is_ts7200(void) static inline int board_is_ts7200(void)
{ {
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7200; return ts72xx_model() == TS72XX_MODEL_TS7200;
} }
static inline int board_is_ts7250(void) static inline int board_is_ts7250(void)
{ {
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7250; return ts72xx_model() == TS72XX_MODEL_TS7250;
} }
static inline int board_is_ts7260(void) static inline int board_is_ts7260(void)
{ {
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7260; return ts72xx_model() == TS72XX_MODEL_TS7260;
} }
static inline int board_is_ts7300(void) static inline int board_is_ts7300(void)
{ {
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7300; return ts72xx_model() == TS72XX_MODEL_TS7300;
} }
static inline int board_is_ts7400(void) static inline int board_is_ts7400(void)
{ {
return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7400; return ts72xx_model() == TS72XX_MODEL_TS7400;
} }
static inline int is_max197_installed(void) static inline int is_max197_installed(void)
......
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