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>

authored by Jordan Crouse and committed by Ingo Molnar ffe6e1da d3942cff

+6 -3
+4 -1
arch/x86/kernel/geode_32.c
··· 166 166 static int has_vsa2 = -1; 167 167 168 168 if (has_vsa2 == -1) { 169 + u16 val; 170 + 169 171 /* 170 172 * The VSA has virtual registers that we can query for a 171 173 * signature. ··· 175 173 outw(VSA_VR_UNLOCK, VSA_VRC_INDEX); 176 174 outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX); 177 175 178 - has_vsa2 = (inw(VSA_VRC_DATA) == VSA_SIG); 176 + val = inw(VSA_VRC_DATA); 177 + has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG); 179 178 } 180 179 181 180 return has_vsa2;
+2 -2
include/asm-x86/geode.h
··· 112 112 #define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */ 113 113 #define VSA_VR_SIGNATURE 0x0003 114 114 #define VSA_VR_MEM_SIZE 0x0200 115 - #define VSA_SIG 0x4132 /* signature is ascii 'VSA2' */ 116 - 115 + #define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */ 116 + #define GSW_VSA_SIG 0x534d /* General Software signature */ 117 117 /* GPIO */ 118 118 119 119 #define GPIO_OUTPUT_VAL 0x00