aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/cs5535.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/cs5535.h')
-rw-r--r--include/linux/cs5535.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/cs5535.h b/include/linux/cs5535.h
index 39e93e8ed95d..eb34108a608b 100644
--- a/include/linux/cs5535.h
+++ b/include/linux/cs5535.h
@@ -36,6 +36,38 @@
36#define LBAR_ACPI_SIZE 0x40 36#define LBAR_ACPI_SIZE 0x40
37#define LBAR_PMS_SIZE 0x80 37#define LBAR_PMS_SIZE 0x80
38 38
39/* VSA2 magic values */
40#define VSA_VRC_INDEX 0xAC1C
41#define VSA_VRC_DATA 0xAC1E
42#define VSA_VR_UNLOCK 0xFC53 /* unlock virtual register */
43#define VSA_VR_SIGNATURE 0x0003
44#define VSA_VR_MEM_SIZE 0x0200
45#define AMD_VSA_SIG 0x4132 /* signature is ascii 'VSA2' */
46#define GSW_VSA_SIG 0x534d /* General Software signature */
47
48#include <linux/io.h>
49
50static inline int cs5535_has_vsa2(void)
51{
52 static int has_vsa2 = -1;
53
54 if (has_vsa2 == -1) {
55 uint16_t val;
56
57 /*
58 * The VSA has virtual registers that we can query for a
59 * signature.
60 */
61 outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
62 outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);
63
64 val = inw(VSA_VRC_DATA);
65 has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG);
66 }
67
68 return has_vsa2;
69}
70
39/* GPIOs */ 71/* GPIOs */
40#define GPIO_OUTPUT_VAL 0x00 72#define GPIO_OUTPUT_VAL 0x00
41#define GPIO_OUTPUT_ENABLE 0x04 73#define GPIO_OUTPUT_ENABLE 0x04