diff options
| author | Jordan Crouse <jordan.crouse@amd.com> | 2008-06-18 13:34:38 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-06-19 08:19:03 -0400 |
| commit | ffe6e1da86d21d7855495b5a772c93f050258f6e (patch) | |
| tree | c327ccc9378b70df18d0b89355e43c613a073334 | |
| parent | d3942cff620bea073fc4e3c8ed878eb1e84615ce (diff) | |
x86, geode: add a VSA2 ID for General Software
General Software writes their own VSA2 module for their version
of the Geode BIOS, which returns a different ID then the standard
VSA2. This was causing the framebuffer driver to break for most
GSW boards.
Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Cc: tglx@linutronix.de
Cc: linux-geode@lists.infradead.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/x86/kernel/geode_32.c | 5 | ||||
| -rw-r--r-- | include/asm-x86/geode.h | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86/kernel/geode_32.c b/arch/x86/kernel/geode_32.c index e8edd63ab000..9b08e852fd1a 100644 --- a/arch/x86/kernel/geode_32.c +++ b/arch/x86/kernel/geode_32.c | |||
| @@ -166,6 +166,8 @@ int geode_has_vsa2(void) | |||
| 166 | static int has_vsa2 = -1; | 166 | static int has_vsa2 = -1; |
| 167 | 167 | ||
| 168 | if (has_vsa2 == -1) { | 168 | if (has_vsa2 == -1) { |
| 169 | u16 val; | ||
| 170 | |||
| 169 | /* | 171 | /* |
| 170 | * The VSA has virtual registers that we can query for a | 172 | * The VSA has virtual registers that we can query for a |
| 171 | * signature. | 173 | * signature. |
| @@ -173,7 +175,8 @@ int geode_has_vsa2(void) | |||
| 173 | outw(VSA_VR_UNLOCK, VSA_VRC_INDEX); | 175 | outw(VSA_VR_UNLOCK, VSA_VRC_INDEX); |
| 174 | outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX); | 176 | outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX); |
| 175 | 177 | ||
| 176 | has_vsa2 = (inw(VSA_VRC_DATA) == VSA_SIG); | 178 | val = inw(VSA_VRC_DATA); |
| 179 | has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG); | ||
| 177 | } | 180 | } |
| 178 | 181 | ||
| 179 | return has_vsa2; | 182 | return has_vsa2; |
diff --git a/include/asm-x86/geode.h b/include/asm-x86/geode.h index 6e6458853a36..bb06027fc83e 100644 --- a/include/asm-x86/geode.h +++ b/include/asm-x86/geode.h | |||
| @@ -112,8 +112,8 @@ extern int geode_get_dev_base(unsigned int dev); | |||
| 112 | #define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */ | 112 | #define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */ |
| 113 | #define VSA_VR_SIGNATURE 0x0003 | 113 | #define VSA_VR_SIGNATURE 0x0003 |
| 114 | #define VSA_VR_MEM_SIZE 0x0200 | 114 | #define VSA_VR_MEM_SIZE 0x0200 |
| 115 | #define VSA_SIG 0x4132 /* signature is ascii 'VSA2' */ | 115 | #define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */ |
| 116 | 116 | #define GSW_VSA_SIG 0x534d /* General Software signature */ | |
| 117 | /* GPIO */ | 117 | /* GPIO */ |
| 118 | 118 | ||
| 119 | #define GPIO_OUTPUT_VAL 0x00 | 119 | #define GPIO_OUTPUT_VAL 0x00 |
