aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica
diff options
context:
space:
mode:
authorLv Zheng <lv.zheng@intel.com>2015-01-26 03:58:56 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-01-26 10:09:56 -0500
commita45de93eb10ae44446aec2c73d722562ab46092a (patch)
treedf3cdda47c765c1273c5eb4241d8f3c17b4c215b /drivers/acpi/acpica
parente044d8f92f79db167bb7f9dfd0f317e3238d82d1 (diff)
ACPICA: Resources: Provide common part for struct acpi_resource_address structures.
struct acpi_resource_address and struct acpi_resource_extended_address64 share substracts just at different offsets. To unify the parsing functions, OSPMs like Linux need a new ACPI_ADDRESS64_ATTRIBUTE as their substructs, so they can extract the shared data. This patch also synchronizes the structure changes to the Linux kernel. The usages are searched by matching the following keywords: 1. acpi_resource_address 2. acpi_resource_extended_address 3. ACPI_RESOURCE_TYPE_ADDRESS 4. ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS And we found and fixed the usages in the following files: arch/ia64/kernel/acpi-ext.c arch/ia64/pci/pci.c arch/x86/pci/acpi.c arch/x86/pci/mmconfig-shared.c drivers/xen/xen-acpi-memhotplug.c drivers/acpi/acpi_memhotplug.c drivers/acpi/pci_root.c drivers/acpi/resource.c drivers/char/hpet.c drivers/pnp/pnpacpi/rsparser.c drivers/hv/vmbus_drv.c Build tests are passed with defconfig/allnoconfig/allyesconfig and defconfig+CONFIG_ACPI=n. Original-by: Thomas Gleixner <tglx@linutronix.de> Original-by: Jiang Liu <jiang.liu@linux.intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica')
-rw-r--r--drivers/acpi/acpica/rsaddr.c9
-rw-r--r--drivers/acpi/acpica/rsdumpinfo.c59
-rw-r--r--drivers/acpi/acpica/rsxface.c10
3 files changed, 40 insertions, 38 deletions
diff --git a/drivers/acpi/acpica/rsaddr.c b/drivers/acpi/acpica/rsaddr.c
index 916fd095ff34..94a3a057042c 100644
--- a/drivers/acpi/acpica/rsaddr.c
+++ b/drivers/acpi/acpica/rsaddr.c
@@ -74,7 +74,7 @@ struct acpi_rsconvert_info acpi_rs_convert_address16[5] = {
74 * Address Translation Offset 74 * Address Translation Offset
75 * Address Length 75 * Address Length
76 */ 76 */
77 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.address16.granularity), 77 {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.address16.address.granularity),
78 AML_OFFSET(address16.granularity), 78 AML_OFFSET(address16.granularity),
79 5}, 79 5},
80 80
@@ -112,7 +112,7 @@ struct acpi_rsconvert_info acpi_rs_convert_address32[5] = {
112 * Address Translation Offset 112 * Address Translation Offset
113 * Address Length 113 * Address Length
114 */ 114 */
115 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.address32.granularity), 115 {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.address32.address.granularity),
116 AML_OFFSET(address32.granularity), 116 AML_OFFSET(address32.granularity),
117 5}, 117 5},
118 118
@@ -150,7 +150,7 @@ struct acpi_rsconvert_info acpi_rs_convert_address64[5] = {
150 * Address Translation Offset 150 * Address Translation Offset
151 * Address Length 151 * Address Length
152 */ 152 */
153 {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.address64.granularity), 153 {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.address64.address.granularity),
154 AML_OFFSET(address64.granularity), 154 AML_OFFSET(address64.granularity),
155 5}, 155 5},
156 156
@@ -194,7 +194,8 @@ struct acpi_rsconvert_info acpi_rs_convert_ext_address64[5] = {
194 * Address Length 194 * Address Length
195 * Type-Specific Attribute 195 * Type-Specific Attribute
196 */ 196 */
197 {ACPI_RSC_MOVE64, ACPI_RS_OFFSET(data.ext_address64.granularity), 197 {ACPI_RSC_MOVE64,
198 ACPI_RS_OFFSET(data.ext_address64.address.granularity),
198 AML_OFFSET(ext_address64.granularity), 199 AML_OFFSET(ext_address64.granularity),
199 6} 200 6}
200}; 201};
diff --git a/drivers/acpi/acpica/rsdumpinfo.c b/drivers/acpi/acpica/rsdumpinfo.c
index 2f9332d5c973..6ba7ad5faa9c 100644
--- a/drivers/acpi/acpica/rsdumpinfo.c
+++ b/drivers/acpi/acpica/rsdumpinfo.c
@@ -183,15 +183,15 @@ struct acpi_rsdump_info acpi_rs_dump_address16[8] = {
183 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address16), 183 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address16),
184 "16-Bit WORD Address Space", NULL}, 184 "16-Bit WORD Address Space", NULL},
185 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 185 {ACPI_RSD_ADDRESS, 0, NULL, NULL},
186 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.granularity), "Granularity", 186 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.granularity),
187 NULL}, 187 "Granularity", NULL},
188 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.minimum), "Address Minimum", 188 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.minimum),
189 NULL}, 189 "Address Minimum", NULL},
190 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.maximum), "Address Maximum", 190 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.maximum),
191 NULL}, 191 "Address Maximum", NULL},
192 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.translation_offset), 192 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.translation_offset),
193 "Translation Offset", NULL}, 193 "Translation Offset", NULL},
194 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address_length), 194 {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(address16.address.address_length),
195 "Address Length", NULL}, 195 "Address Length", NULL},
196 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address16.resource_source), NULL, NULL} 196 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address16.resource_source), NULL, NULL}
197}; 197};
@@ -200,15 +200,15 @@ struct acpi_rsdump_info acpi_rs_dump_address32[8] = {
200 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address32), 200 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address32),
201 "32-Bit DWORD Address Space", NULL}, 201 "32-Bit DWORD Address Space", NULL},
202 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 202 {ACPI_RSD_ADDRESS, 0, NULL, NULL},
203 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.granularity), "Granularity", 203 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.granularity),
204 NULL}, 204 "Granularity", NULL},
205 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.minimum), "Address Minimum", 205 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.minimum),
206 NULL}, 206 "Address Minimum", NULL},
207 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.maximum), "Address Maximum", 207 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.maximum),
208 NULL}, 208 "Address Maximum", NULL},
209 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.translation_offset), 209 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.translation_offset),
210 "Translation Offset", NULL}, 210 "Translation Offset", NULL},
211 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address_length), 211 {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(address32.address.address_length),
212 "Address Length", NULL}, 212 "Address Length", NULL},
213 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address32.resource_source), NULL, NULL} 213 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address32.resource_source), NULL, NULL}
214}; 214};
@@ -217,15 +217,15 @@ struct acpi_rsdump_info acpi_rs_dump_address64[8] = {
217 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address64), 217 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_address64),
218 "64-Bit QWORD Address Space", NULL}, 218 "64-Bit QWORD Address Space", NULL},
219 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 219 {ACPI_RSD_ADDRESS, 0, NULL, NULL},
220 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.granularity), "Granularity", 220 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.granularity),
221 NULL}, 221 "Granularity", NULL},
222 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.minimum), "Address Minimum", 222 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.minimum),
223 NULL}, 223 "Address Minimum", NULL},
224 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.maximum), "Address Maximum", 224 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.maximum),
225 NULL}, 225 "Address Maximum", NULL},
226 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.translation_offset), 226 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.translation_offset),
227 "Translation Offset", NULL}, 227 "Translation Offset", NULL},
228 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address_length), 228 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(address64.address.address_length),
229 "Address Length", NULL}, 229 "Address Length", NULL},
230 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address64.resource_source), NULL, NULL} 230 {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(address64.resource_source), NULL, NULL}
231}; 231};
@@ -234,15 +234,16 @@ struct acpi_rsdump_info acpi_rs_dump_ext_address64[8] = {
234 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_address64), 234 {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_ext_address64),
235 "64-Bit Extended Address Space", NULL}, 235 "64-Bit Extended Address Space", NULL},
236 {ACPI_RSD_ADDRESS, 0, NULL, NULL}, 236 {ACPI_RSD_ADDRESS, 0, NULL, NULL},
237 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.granularity), 237 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.granularity),
238 "Granularity", NULL}, 238 "Granularity", NULL},
239 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.minimum), 239 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.minimum),
240 "Address Minimum", NULL}, 240 "Address Minimum", NULL},
241 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.maximum), 241 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.maximum),
242 "Address Maximum", NULL}, 242 "Address Maximum", NULL},
243 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.translation_offset), 243 {ACPI_RSD_UINT64,
244 ACPI_RSD_OFFSET(ext_address64.address.translation_offset),
244 "Translation Offset", NULL}, 245 "Translation Offset", NULL},
245 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address_length), 246 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.address.address_length),
246 "Address Length", NULL}, 247 "Address Length", NULL},
247 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.type_specific), 248 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(ext_address64.type_specific),
248 "Type-Specific Attribute", NULL} 249 "Type-Specific Attribute", NULL}
diff --git a/drivers/acpi/acpica/rsxface.c b/drivers/acpi/acpica/rsxface.c
index 877ab9202133..295287891174 100644
--- a/drivers/acpi/acpica/rsxface.c
+++ b/drivers/acpi/acpica/rsxface.c
@@ -60,11 +60,11 @@ ACPI_MODULE_NAME("rsxface")
60 ACPI_COPY_FIELD(out, in, min_address_fixed); \ 60 ACPI_COPY_FIELD(out, in, min_address_fixed); \
61 ACPI_COPY_FIELD(out, in, max_address_fixed); \ 61 ACPI_COPY_FIELD(out, in, max_address_fixed); \
62 ACPI_COPY_FIELD(out, in, info); \ 62 ACPI_COPY_FIELD(out, in, info); \
63 ACPI_COPY_FIELD(out, in, granularity); \ 63 ACPI_COPY_FIELD(out, in, address.granularity); \
64 ACPI_COPY_FIELD(out, in, minimum); \ 64 ACPI_COPY_FIELD(out, in, address.minimum); \
65 ACPI_COPY_FIELD(out, in, maximum); \ 65 ACPI_COPY_FIELD(out, in, address.maximum); \
66 ACPI_COPY_FIELD(out, in, translation_offset); \ 66 ACPI_COPY_FIELD(out, in, address.translation_offset); \
67 ACPI_COPY_FIELD(out, in, address_length); \ 67 ACPI_COPY_FIELD(out, in, address.address_length); \
68 ACPI_COPY_FIELD(out, in, resource_source); 68 ACPI_COPY_FIELD(out, in, resource_source);
69/* Local prototypes */ 69/* Local prototypes */
70static acpi_status 70static acpi_status