diff options
author | Andres Salomon <dilinger@collabora.co.uk> | 2009-12-14 21:00:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-15 11:53:28 -0500 |
commit | f060f27007b393bac6e50ee6fc26d8505acf6fe4 (patch) | |
tree | fd83b0c9550814dfb5fc6a726ce7b5eb1baaa6f3 /arch | |
parent | 2e8c12436f540d3c40137ebf10268803dc972f6a (diff) |
cs5535: move VSA2 checks into linux/cs5535.h
Signed-off-by: Andres Salomon <dilinger@collabora.co.uk>
Cc: Jordan Crouse <jordan@cosmicpenguin.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: john stultz <johnstul@us.ibm.com>
Cc: Chris Ball <cjb@laptop.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/include/asm/geode.h | 19 | ||||
-rw-r--r-- | arch/x86/kernel/geode_32.c | 22 | ||||
-rw-r--r-- | arch/x86/kernel/olpc.c | 4 |
3 files changed, 2 insertions, 43 deletions
diff --git a/arch/x86/include/asm/geode.h b/arch/x86/include/asm/geode.h index 976b3f11c009..df1eaf87426a 100644 --- a/arch/x86/include/asm/geode.h +++ b/arch/x86/include/asm/geode.h | |||
@@ -95,16 +95,6 @@ extern int geode_get_dev_base(unsigned int dev); | |||
95 | #define PM_AWKD 0x50 | 95 | #define PM_AWKD 0x50 |
96 | #define PM_SSC 0x54 | 96 | #define PM_SSC 0x54 |
97 | 97 | ||
98 | /* VSA2 magic values */ | ||
99 | |||
100 | #define VSA_VRC_INDEX 0xAC1C | ||
101 | #define VSA_VRC_DATA 0xAC1E | ||
102 | #define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */ | ||
103 | #define VSA_VR_SIGNATURE 0x0003 | ||
104 | #define VSA_VR_MEM_SIZE 0x0200 | ||
105 | #define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */ | ||
106 | #define GSW_VSA_SIG 0x534d /* General Software signature */ | ||
107 | |||
108 | static inline u32 geode_gpio(unsigned int nr) | 98 | static inline u32 geode_gpio(unsigned int nr) |
109 | { | 99 | { |
110 | BUG_ON(nr > 28); | 100 | BUG_ON(nr > 28); |
@@ -148,15 +138,6 @@ static inline int is_geode(void) | |||
148 | return (is_geode_gx() || is_geode_lx()); | 138 | return (is_geode_gx() || is_geode_lx()); |
149 | } | 139 | } |
150 | 140 | ||
151 | #ifdef CONFIG_MGEODE_LX | ||
152 | extern int geode_has_vsa2(void); | ||
153 | #else | ||
154 | static inline int geode_has_vsa2(void) | ||
155 | { | ||
156 | return 0; | ||
157 | } | ||
158 | #endif | ||
159 | |||
160 | static inline void geode_mfgpt_write(int timer, u16 reg, u16 value) | 141 | static inline void geode_mfgpt_write(int timer, u16 reg, u16 value) |
161 | { | 142 | { |
162 | u32 base = geode_get_dev_base(GEODE_DEV_MFGPT); | 143 | u32 base = geode_get_dev_base(GEODE_DEV_MFGPT); |
diff --git a/arch/x86/kernel/geode_32.c b/arch/x86/kernel/geode_32.c index 9b08e852fd1a..9dad6ca6cd70 100644 --- a/arch/x86/kernel/geode_32.c +++ b/arch/x86/kernel/geode_32.c | |||
@@ -161,28 +161,6 @@ void geode_gpio_setup_event(unsigned int gpio, int pair, int pme) | |||
161 | } | 161 | } |
162 | EXPORT_SYMBOL_GPL(geode_gpio_setup_event); | 162 | EXPORT_SYMBOL_GPL(geode_gpio_setup_event); |
163 | 163 | ||
164 | int geode_has_vsa2(void) | ||
165 | { | ||
166 | static int has_vsa2 = -1; | ||
167 | |||
168 | if (has_vsa2 == -1) { | ||
169 | u16 val; | ||
170 | |||
171 | /* | ||
172 | * The VSA has virtual registers that we can query for a | ||
173 | * signature. | ||
174 | */ | ||
175 | outw(VSA_VR_UNLOCK, VSA_VRC_INDEX); | ||
176 | outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX); | ||
177 | |||
178 | val = inw(VSA_VRC_DATA); | ||
179 | has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG); | ||
180 | } | ||
181 | |||
182 | return has_vsa2; | ||
183 | } | ||
184 | EXPORT_SYMBOL_GPL(geode_has_vsa2); | ||
185 | |||
186 | static int __init geode_southbridge_init(void) | 164 | static int __init geode_southbridge_init(void) |
187 | { | 165 | { |
188 | if (!is_geode()) | 166 | if (!is_geode()) |
diff --git a/arch/x86/kernel/olpc.c b/arch/x86/kernel/olpc.c index 4006c522adc7..9d1d263f786f 100644 --- a/arch/x86/kernel/olpc.c +++ b/arch/x86/kernel/olpc.c | |||
@@ -212,7 +212,7 @@ static int __init olpc_init(void) | |||
212 | unsigned char *romsig; | 212 | unsigned char *romsig; |
213 | 213 | ||
214 | /* The ioremap check is dangerous; limit what we run it on */ | 214 | /* The ioremap check is dangerous; limit what we run it on */ |
215 | if (!is_geode() || geode_has_vsa2()) | 215 | if (!is_geode() || cs5535_has_vsa2()) |
216 | return 0; | 216 | return 0; |
217 | 217 | ||
218 | spin_lock_init(&ec_lock); | 218 | spin_lock_init(&ec_lock); |
@@ -244,7 +244,7 @@ static int __init olpc_init(void) | |||
244 | (unsigned char *) &olpc_platform_info.ecver, 1); | 244 | (unsigned char *) &olpc_platform_info.ecver, 1); |
245 | 245 | ||
246 | /* check to see if the VSA exists */ | 246 | /* check to see if the VSA exists */ |
247 | if (geode_has_vsa2()) | 247 | if (cs5535_has_vsa2()) |
248 | olpc_platform_info.flags |= OLPC_F_VSA; | 248 | olpc_platform_info.flags |= OLPC_F_VSA; |
249 | 249 | ||
250 | printk(KERN_INFO "OLPC board revision %s%X (EC=%x)\n", | 250 | printk(KERN_INFO "OLPC board revision %s%X (EC=%x)\n", |