diff options
Diffstat (limited to 'drivers/acpi/system.c')
-rw-r--r-- | drivers/acpi/system.c | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c index d86dcb3c2366..7147b0bdab0a 100644 --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c | |||
@@ -32,6 +32,11 @@ | |||
32 | 32 | ||
33 | #define _COMPONENT ACPI_SYSTEM_COMPONENT | 33 | #define _COMPONENT ACPI_SYSTEM_COMPONENT |
34 | ACPI_MODULE_NAME("acpi_system") | 34 | ACPI_MODULE_NAME("acpi_system") |
35 | #ifdef MODULE_PARAM_PREFIX | ||
36 | #undef MODULE_PARAM_PREFIX | ||
37 | #endif | ||
38 | #define MODULE_PARAM_PREFIX "acpi." | ||
39 | |||
35 | #define ACPI_SYSTEM_CLASS "system" | 40 | #define ACPI_SYSTEM_CLASS "system" |
36 | #define ACPI_SYSTEM_DRIVER_NAME "ACPI System Driver" | 41 | #define ACPI_SYSTEM_DRIVER_NAME "ACPI System Driver" |
37 | #define ACPI_SYSTEM_DEVICE_NAME "System" | 42 | #define ACPI_SYSTEM_DEVICE_NAME "System" |
@@ -39,11 +44,24 @@ ACPI_MODULE_NAME("acpi_system") | |||
39 | #define ACPI_SYSTEM_FILE_EVENT "event" | 44 | #define ACPI_SYSTEM_FILE_EVENT "event" |
40 | #define ACPI_SYSTEM_FILE_DSDT "dsdt" | 45 | #define ACPI_SYSTEM_FILE_DSDT "dsdt" |
41 | #define ACPI_SYSTEM_FILE_FADT "fadt" | 46 | #define ACPI_SYSTEM_FILE_FADT "fadt" |
42 | extern struct fadt_descriptor acpi_fadt; | 47 | |
48 | /* | ||
49 | * Make ACPICA version work as module param | ||
50 | */ | ||
51 | static int param_get_acpica_version(char *buffer, struct kernel_param *kp) { | ||
52 | int result; | ||
53 | |||
54 | result = sprintf(buffer, "%x", ACPI_CA_VERSION); | ||
55 | |||
56 | return result; | ||
57 | } | ||
58 | |||
59 | module_param_call(acpica_version, NULL, param_get_acpica_version, NULL, 0444); | ||
43 | 60 | ||
44 | /* -------------------------------------------------------------------------- | 61 | /* -------------------------------------------------------------------------- |
45 | FS Interface (/proc) | 62 | FS Interface (/proc) |
46 | -------------------------------------------------------------------------- */ | 63 | -------------------------------------------------------------------------- */ |
64 | #ifdef CONFIG_ACPI_PROCFS | ||
47 | 65 | ||
48 | static int acpi_system_read_info(struct seq_file *seq, void *offset) | 66 | static int acpi_system_read_info(struct seq_file *seq, void *offset) |
49 | { | 67 | { |
@@ -63,6 +81,7 @@ static const struct file_operations acpi_system_info_ops = { | |||
63 | .llseek = seq_lseek, | 81 | .llseek = seq_lseek, |
64 | .release = single_release, | 82 | .release = single_release, |
65 | }; | 83 | }; |
84 | #endif | ||
66 | 85 | ||
67 | static ssize_t acpi_system_read_dsdt(struct file *, char __user *, size_t, | 86 | static ssize_t acpi_system_read_dsdt(struct file *, char __user *, size_t, |
68 | loff_t *); | 87 | loff_t *); |
@@ -76,17 +95,16 @@ acpi_system_read_dsdt(struct file *file, | |||
76 | char __user * buffer, size_t count, loff_t * ppos) | 95 | char __user * buffer, size_t count, loff_t * ppos) |
77 | { | 96 | { |
78 | acpi_status status = AE_OK; | 97 | acpi_status status = AE_OK; |
79 | struct acpi_buffer dsdt = { ACPI_ALLOCATE_BUFFER, NULL }; | 98 | struct acpi_table_header *dsdt = NULL; |
80 | ssize_t res; | 99 | ssize_t res; |
81 | 100 | ||
82 | 101 | ||
83 | status = acpi_get_table(ACPI_TABLE_ID_DSDT, 1, &dsdt); | 102 | status = acpi_get_table(ACPI_SIG_DSDT, 1, &dsdt); |
84 | if (ACPI_FAILURE(status)) | 103 | if (ACPI_FAILURE(status)) |
85 | return -ENODEV; | 104 | return -ENODEV; |
86 | 105 | ||
87 | res = simple_read_from_buffer(buffer, count, ppos, | 106 | res = simple_read_from_buffer(buffer, count, ppos, |
88 | dsdt.pointer, dsdt.length); | 107 | dsdt, dsdt->length); |
89 | kfree(dsdt.pointer); | ||
90 | 108 | ||
91 | return res; | 109 | return res; |
92 | } | 110 | } |
@@ -103,17 +121,16 @@ acpi_system_read_fadt(struct file *file, | |||
103 | char __user * buffer, size_t count, loff_t * ppos) | 121 | char __user * buffer, size_t count, loff_t * ppos) |
104 | { | 122 | { |
105 | acpi_status status = AE_OK; | 123 | acpi_status status = AE_OK; |
106 | struct acpi_buffer fadt = { ACPI_ALLOCATE_BUFFER, NULL }; | 124 | struct acpi_table_header *fadt = NULL; |
107 | ssize_t res; | 125 | ssize_t res; |
108 | 126 | ||
109 | 127 | ||
110 | status = acpi_get_table(ACPI_TABLE_ID_FADT, 1, &fadt); | 128 | status = acpi_get_table(ACPI_SIG_FADT, 1, &fadt); |
111 | if (ACPI_FAILURE(status)) | 129 | if (ACPI_FAILURE(status)) |
112 | return -ENODEV; | 130 | return -ENODEV; |
113 | 131 | ||
114 | res = simple_read_from_buffer(buffer, count, ppos, | 132 | res = simple_read_from_buffer(buffer, count, ppos, |
115 | fadt.pointer, fadt.length); | 133 | fadt, fadt->length); |
116 | kfree(fadt.pointer); | ||
117 | 134 | ||
118 | return res; | 135 | return res; |
119 | } | 136 | } |
@@ -128,6 +145,7 @@ static int __init acpi_system_init(void) | |||
128 | if (acpi_disabled) | 145 | if (acpi_disabled) |
129 | return 0; | 146 | return 0; |
130 | 147 | ||
148 | #ifdef CONFIG_ACPI_PROCFS | ||
131 | /* 'info' [R] */ | 149 | /* 'info' [R] */ |
132 | name = ACPI_SYSTEM_FILE_INFO; | 150 | name = ACPI_SYSTEM_FILE_INFO; |
133 | entry = create_proc_entry(name, S_IRUGO, acpi_root_dir); | 151 | entry = create_proc_entry(name, S_IRUGO, acpi_root_dir); |
@@ -136,6 +154,7 @@ static int __init acpi_system_init(void) | |||
136 | else { | 154 | else { |
137 | entry->proc_fops = &acpi_system_info_ops; | 155 | entry->proc_fops = &acpi_system_info_ops; |
138 | } | 156 | } |
157 | #endif | ||
139 | 158 | ||
140 | /* 'dsdt' [R] */ | 159 | /* 'dsdt' [R] */ |
141 | name = ACPI_SYSTEM_FILE_DSDT; | 160 | name = ACPI_SYSTEM_FILE_DSDT; |
@@ -159,7 +178,9 @@ static int __init acpi_system_init(void) | |||
159 | Error: | 178 | Error: |
160 | remove_proc_entry(ACPI_SYSTEM_FILE_FADT, acpi_root_dir); | 179 | remove_proc_entry(ACPI_SYSTEM_FILE_FADT, acpi_root_dir); |
161 | remove_proc_entry(ACPI_SYSTEM_FILE_DSDT, acpi_root_dir); | 180 | remove_proc_entry(ACPI_SYSTEM_FILE_DSDT, acpi_root_dir); |
181 | #ifdef CONFIG_ACPI_PROCFS | ||
162 | remove_proc_entry(ACPI_SYSTEM_FILE_INFO, acpi_root_dir); | 182 | remove_proc_entry(ACPI_SYSTEM_FILE_INFO, acpi_root_dir); |
183 | #endif | ||
163 | 184 | ||
164 | error = -EFAULT; | 185 | error = -EFAULT; |
165 | goto Done; | 186 | goto Done; |