geode: Add a VSA2 ID for General Software
PATCH 1/1 geode: Add a VSA2 ID for General Software
We have learned from bitter experience that one of the Geode BIOS vendors, General Software, uses a different ID for their VSA implementation then the canonical version from AMD & Insyde. This patch adds the ID to the have_geode_vsa2() check, and should make lxfb work again on many GSW platforms. If Linus is planning another -rcX revision it would be good to try and get this in, otherwise please schedule this for the stable series and 2.6.27.
Thanks,
Jordan
[PATCH] geode: Add a VSA2 ID for General Software
From: Jordan Crouse <[email protected]>
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.
---
arch/x86/kernel/geode_32.c | 5 ++++- include/asm-x86/geode.h | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-)
arch/x86/kernel/geode_32.c +4 -1
@@ -166,6 +166,8 @@ int geode_has_vsa2(void)static int has_vsa2 =-1 ;if (has_vsa2 ==-1 ) { +u16 val; +/* * The VSA has virtual registers that we can query for a * signature.
@@ -173,7 +175,8 @@ int geode_has_vsa2(void)outw (VSA_VR_UNLOCK ,VSA_VRC_INDEX );outw (VSA_VR_SIGNATURE ,VSA_VRC_INDEX ); - has_vsa2 = (inw (VSA_VRC_DATA ) ==VSA_SIG ); + val =inw (VSA_VRC_DATA ); + has_vsa2 = (val ==AMD_VSA_SIG || val ==GSW_VSA_SIG ); }return has_vsa2;
include/asm-x86/geode.h +2 -2
@@ -112,8 +112,8 @@ extern int geode_get_dev_base(unsigned int dev);#define VSA_VR_UNLOCK 0xFC53/* unlock virtual register */ #define VSA_VR_SIGNATURE 0x0003#define VSA_VR_MEM_SIZE 0x0200 -#define VSA_SIG 0x4132/* signature is ascii 'VSA2' */ - +#define AMD_VSA_SIG 0x4132/* signature is ascii 'VSA2' */ +#define GSW_VSA_SIG 0x534d/* General Software signature */ /* GPIO */ #define GPIO_OUTPUT_VAL 0x00
Ingo Molnar
AppliedQuoted 7 lines · Jordan Crouse
We have learned from bitter experience that one of the Geode BIOS vendors, General Software, uses a different ID for their VSA implementation then the canonical version from AMD & Insyde. This patch adds the ID to the
have_geode_vsa2()check, and should make lxfb work again on many GSW platforms. If Linus is planning another -rcX revision it would be good to try and get this in, otherwise please schedule this for the stable series and 2.6.27.
applied to tip/x86/urgent. Thanks,
Ingo