Commit f060f270 authored by Andres Salomon's avatar Andres Salomon Committed by Linus Torvalds

cs5535: move VSA2 checks into linux/cs5535.h

Signed-off-by: default avatarAndres 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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 2e8c1243
...@@ -95,16 +95,6 @@ extern int geode_get_dev_base(unsigned int dev); ...@@ -95,16 +95,6 @@ extern int geode_get_dev_base(unsigned int dev);
#define PM_AWKD 0x50 #define PM_AWKD 0x50
#define PM_SSC 0x54 #define PM_SSC 0x54
/* VSA2 magic values */
#define VSA_VRC_INDEX 0xAC1C
#define VSA_VRC_DATA 0xAC1E
#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */
#define VSA_VR_SIGNATURE 0x0003
#define VSA_VR_MEM_SIZE 0x0200
#define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */
#define GSW_VSA_SIG 0x534d /* General Software signature */
static inline u32 geode_gpio(unsigned int nr) static inline u32 geode_gpio(unsigned int nr)
{ {
BUG_ON(nr > 28); BUG_ON(nr > 28);
...@@ -148,15 +138,6 @@ static inline int is_geode(void) ...@@ -148,15 +138,6 @@ static inline int is_geode(void)
return (is_geode_gx() || is_geode_lx()); return (is_geode_gx() || is_geode_lx());
} }
#ifdef CONFIG_MGEODE_LX
extern int geode_has_vsa2(void);
#else
static inline int geode_has_vsa2(void)
{
return 0;
}
#endif
static inline void geode_mfgpt_write(int timer, u16 reg, u16 value) static inline void geode_mfgpt_write(int timer, u16 reg, u16 value)
{ {
u32 base = geode_get_dev_base(GEODE_DEV_MFGPT); u32 base = geode_get_dev_base(GEODE_DEV_MFGPT);
......
...@@ -161,28 +161,6 @@ void geode_gpio_setup_event(unsigned int gpio, int pair, int pme) ...@@ -161,28 +161,6 @@ void geode_gpio_setup_event(unsigned int gpio, int pair, int pme)
} }
EXPORT_SYMBOL_GPL(geode_gpio_setup_event); EXPORT_SYMBOL_GPL(geode_gpio_setup_event);
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.
*/
outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);
val = inw(VSA_VRC_DATA);
has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG);
}
return has_vsa2;
}
EXPORT_SYMBOL_GPL(geode_has_vsa2);
static int __init geode_southbridge_init(void) static int __init geode_southbridge_init(void)
{ {
if (!is_geode()) if (!is_geode())
......
...@@ -212,7 +212,7 @@ static int __init olpc_init(void) ...@@ -212,7 +212,7 @@ static int __init olpc_init(void)
unsigned char *romsig; unsigned char *romsig;
/* The ioremap check is dangerous; limit what we run it on */ /* The ioremap check is dangerous; limit what we run it on */
if (!is_geode() || geode_has_vsa2()) if (!is_geode() || cs5535_has_vsa2())
return 0; return 0;
spin_lock_init(&ec_lock); spin_lock_init(&ec_lock);
...@@ -244,7 +244,7 @@ static int __init olpc_init(void) ...@@ -244,7 +244,7 @@ static int __init olpc_init(void)
(unsigned char *) &olpc_platform_info.ecver, 1); (unsigned char *) &olpc_platform_info.ecver, 1);
/* check to see if the VSA exists */ /* check to see if the VSA exists */
if (geode_has_vsa2()) if (cs5535_has_vsa2())
olpc_platform_info.flags |= OLPC_F_VSA; olpc_platform_info.flags |= OLPC_F_VSA;
printk(KERN_INFO "OLPC board revision %s%X (EC=%x)\n", printk(KERN_INFO "OLPC board revision %s%X (EC=%x)\n",
......
...@@ -25,7 +25,7 @@ unsigned int gx_frame_buffer_size(void) ...@@ -25,7 +25,7 @@ unsigned int gx_frame_buffer_size(void)
{ {
unsigned int val; unsigned int val;
if (!geode_has_vsa2()) { if (!cs5535_has_vsa2()) {
uint32_t hi, lo; uint32_t hi, lo;
/* The number of pages is (PMAX - PMIN)+1 */ /* The number of pages is (PMAX - PMIN)+1 */
......
...@@ -307,7 +307,7 @@ unsigned int lx_framebuffer_size(void) ...@@ -307,7 +307,7 @@ unsigned int lx_framebuffer_size(void)
{ {
unsigned int val; unsigned int val;
if (!geode_has_vsa2()) { if (!cs5535_has_vsa2()) {
uint32_t hi, lo; uint32_t hi, lo;
/* The number of pages is (PMAX - PMIN)+1 */ /* The number of pages is (PMAX - PMIN)+1 */
......
...@@ -36,6 +36,38 @@ ...@@ -36,6 +36,38 @@
#define LBAR_ACPI_SIZE 0x40 #define LBAR_ACPI_SIZE 0x40
#define LBAR_PMS_SIZE 0x80 #define LBAR_PMS_SIZE 0x80
/* VSA2 magic values */
#define VSA_VRC_INDEX 0xAC1C
#define VSA_VRC_DATA 0xAC1E
#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */
#define VSA_VR_SIGNATURE 0x0003
#define VSA_VR_MEM_SIZE 0x0200
#define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */
#define GSW_VSA_SIG 0x534d /* General Software signature */
#include <linux/io.h>
static inline int cs5535_has_vsa2(void)
{
static int has_vsa2 = -1;
if (has_vsa2 == -1) {
uint16_t val;
/*
* The VSA has virtual registers that we can query for a
* signature.
*/
outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);
val = inw(VSA_VRC_DATA);
has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG);
}
return has_vsa2;
}
/* GPIOs */ /* GPIOs */
#define GPIO_OUTPUT_VAL 0x00 #define GPIO_OUTPUT_VAL 0x00
#define GPIO_OUTPUT_ENABLE 0x04 #define GPIO_OUTPUT_ENABLE 0x04
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment