diff options
Diffstat (limited to 'include/linux/cs5535.h')
-rw-r--r-- | include/linux/cs5535.h | 32 |
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 | |||
50 | static 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 |