aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asm-x86/geode.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/asm-x86/geode.h b/include/asm-x86/geode.h
index b1bdf6378563..3978200f126c 100644
--- a/include/asm-x86/geode.h
+++ b/include/asm-x86/geode.h
@@ -103,6 +103,14 @@ extern int geode_get_dev_base(unsigned int dev);
103#define PM_AWKD 0x50 103#define PM_AWKD 0x50
104#define PM_SSC 0x54 104#define PM_SSC 0x54
105 105
106/* VSA2 magic values */
107
108#define VSA_VRC_INDEX 0xAC1C
109#define VSA_VRC_DATA 0xAC1E
110#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */
111#define VSA_VR_SIGNATURE 0x0003
112#define VSA_SIG 0x4132 /* signature is ascii 'VSA2' */
113
106/* GPIO */ 114/* GPIO */
107 115
108#define GPIO_OUTPUT_VAL 0x00 116#define GPIO_OUTPUT_VAL 0x00
@@ -174,6 +182,17 @@ static inline int is_geode(void)
174 return (is_geode_gx() || is_geode_lx()); 182 return (is_geode_gx() || is_geode_lx());
175} 183}
176 184
185/*
186 * The VSA has virtual registers that we can query for a signature.
187 */
188static inline int geode_has_vsa2(void)
189{
190 outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
191 outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);
192
193 return (inw(VSA_VRC_DATA) == VSA_SIG);
194}
195
177/* MFGPTs */ 196/* MFGPTs */
178 197
179#define MFGPT_MAX_TIMERS 8 198#define MFGPT_MAX_TIMERS 8