diff options
Diffstat (limited to 'drivers/acpi/resources/rsmisc.c')
-rw-r--r-- | drivers/acpi/resources/rsmisc.c | 160 |
1 files changed, 66 insertions, 94 deletions
diff --git a/drivers/acpi/resources/rsmisc.c b/drivers/acpi/resources/rsmisc.c index d16be44b5df7..a1f1741f0d83 100644 --- a/drivers/acpi/resources/rsmisc.c +++ b/drivers/acpi/resources/rsmisc.c | |||
@@ -84,24 +84,20 @@ acpi_rs_end_tag_resource ( | |||
84 | ACPI_FUNCTION_TRACE ("rs_end_tag_resource"); | 84 | ACPI_FUNCTION_TRACE ("rs_end_tag_resource"); |
85 | 85 | ||
86 | 86 | ||
87 | /* | 87 | /* The number of bytes consumed is static */ |
88 | * The number of bytes consumed is static | 88 | |
89 | */ | ||
90 | *bytes_consumed = 2; | 89 | *bytes_consumed = 2; |
91 | 90 | ||
92 | /* | 91 | /* Fill out the structure */ |
93 | * Fill out the structure | 92 | |
94 | */ | ||
95 | output_struct->id = ACPI_RSTYPE_END_TAG; | 93 | output_struct->id = ACPI_RSTYPE_END_TAG; |
96 | 94 | ||
97 | /* | 95 | /* Set the Length parameter */ |
98 | * Set the Length parameter | 96 | |
99 | */ | ||
100 | output_struct->length = 0; | 97 | output_struct->length = 0; |
101 | 98 | ||
102 | /* | 99 | /* Return the final size of the structure */ |
103 | * Return the final size of the structure | 100 | |
104 | */ | ||
105 | *structure_size = struct_size; | 101 | *structure_size = struct_size; |
106 | return_ACPI_STATUS (AE_OK); | 102 | return_ACPI_STATUS (AE_OK); |
107 | } | 103 | } |
@@ -136,9 +132,8 @@ acpi_rs_end_tag_stream ( | |||
136 | ACPI_FUNCTION_TRACE ("rs_end_tag_stream"); | 132 | ACPI_FUNCTION_TRACE ("rs_end_tag_stream"); |
137 | 133 | ||
138 | 134 | ||
139 | /* | 135 | /* The descriptor field is static */ |
140 | * The descriptor field is static | 136 | |
141 | */ | ||
142 | *buffer = 0x79; | 137 | *buffer = 0x79; |
143 | buffer += 1; | 138 | buffer += 1; |
144 | 139 | ||
@@ -151,9 +146,8 @@ acpi_rs_end_tag_stream ( | |||
151 | *buffer = temp8; | 146 | *buffer = temp8; |
152 | buffer += 1; | 147 | buffer += 1; |
153 | 148 | ||
154 | /* | 149 | /* Return the number of bytes consumed in this operation */ |
155 | * Return the number of bytes consumed in this operation | 150 | |
156 | */ | ||
157 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); | 151 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); |
158 | return_ACPI_STATUS (AE_OK); | 152 | return_ACPI_STATUS (AE_OK); |
159 | } | 153 | } |
@@ -192,21 +186,20 @@ acpi_rs_vendor_resource ( | |||
192 | u16 temp16 = 0; | 186 | u16 temp16 = 0; |
193 | u8 temp8 = 0; | 187 | u8 temp8 = 0; |
194 | u8 index; | 188 | u8 index; |
195 | acpi_size struct_size = ACPI_SIZEOF_RESOURCE (struct acpi_resource_vendor); | 189 | acpi_size struct_size = ACPI_SIZEOF_RESOURCE ( |
190 | struct acpi_resource_vendor); | ||
196 | 191 | ||
197 | 192 | ||
198 | ACPI_FUNCTION_TRACE ("rs_vendor_resource"); | 193 | ACPI_FUNCTION_TRACE ("rs_vendor_resource"); |
199 | 194 | ||
200 | 195 | ||
201 | /* | 196 | /* Dereference the Descriptor to find if this is a large or small item. */ |
202 | * Dereference the Descriptor to find if this is a large or small item. | 197 | |
203 | */ | ||
204 | temp8 = *buffer; | 198 | temp8 = *buffer; |
205 | 199 | ||
206 | if (temp8 & 0x80) { | 200 | if (temp8 & 0x80) { |
207 | /* | 201 | /* Large Item, point to the length field */ |
208 | * Large Item, point to the length field | 202 | |
209 | */ | ||
210 | buffer += 1; | 203 | buffer += 1; |
211 | 204 | ||
212 | /* Dereference */ | 205 | /* Dereference */ |
@@ -222,9 +215,8 @@ acpi_rs_vendor_resource ( | |||
222 | buffer += 2; | 215 | buffer += 2; |
223 | } | 216 | } |
224 | else { | 217 | else { |
225 | /* | 218 | /* Small Item, dereference the size */ |
226 | * Small Item, dereference the size | 219 | |
227 | */ | ||
228 | temp16 = (u8)(*buffer & 0x07); | 220 | temp16 = (u8)(*buffer & 0x07); |
229 | 221 | ||
230 | /* Calculate bytes consumed */ | 222 | /* Calculate bytes consumed */ |
@@ -251,14 +243,12 @@ acpi_rs_vendor_resource ( | |||
251 | */ | 243 | */ |
252 | struct_size += ACPI_ROUND_UP_to_32_bITS (temp16); | 244 | struct_size += ACPI_ROUND_UP_to_32_bITS (temp16); |
253 | 245 | ||
254 | /* | 246 | /* Set the Length parameter */ |
255 | * Set the Length parameter | 247 | |
256 | */ | ||
257 | output_struct->length = (u32) struct_size; | 248 | output_struct->length = (u32) struct_size; |
258 | 249 | ||
259 | /* | 250 | /* Return the final size of the structure */ |
260 | * Return the final size of the structure | 251 | |
261 | */ | ||
262 | *structure_size = struct_size; | 252 | *structure_size = struct_size; |
263 | return_ACPI_STATUS (AE_OK); | 253 | return_ACPI_STATUS (AE_OK); |
264 | } | 254 | } |
@@ -295,13 +285,11 @@ acpi_rs_vendor_stream ( | |||
295 | ACPI_FUNCTION_TRACE ("rs_vendor_stream"); | 285 | ACPI_FUNCTION_TRACE ("rs_vendor_stream"); |
296 | 286 | ||
297 | 287 | ||
298 | /* | 288 | /* Dereference the length to find if this is a large or small item. */ |
299 | * Dereference the length to find if this is a large or small item. | 289 | |
300 | */ | ||
301 | if(linked_list->data.vendor_specific.length > 7) { | 290 | if(linked_list->data.vendor_specific.length > 7) { |
302 | /* | 291 | /* Large Item, Set the descriptor field and length bytes */ |
303 | * Large Item, Set the descriptor field and length bytes | 292 | |
304 | */ | ||
305 | *buffer = 0x84; | 293 | *buffer = 0x84; |
306 | buffer += 1; | 294 | buffer += 1; |
307 | 295 | ||
@@ -311,9 +299,8 @@ acpi_rs_vendor_stream ( | |||
311 | buffer += 2; | 299 | buffer += 2; |
312 | } | 300 | } |
313 | else { | 301 | else { |
314 | /* | 302 | /* Small Item, Set the descriptor field */ |
315 | * Small Item, Set the descriptor field | 303 | |
316 | */ | ||
317 | temp8 = 0x70; | 304 | temp8 = 0x70; |
318 | temp8 |= (u8) linked_list->data.vendor_specific.length; | 305 | temp8 |= (u8) linked_list->data.vendor_specific.length; |
319 | 306 | ||
@@ -321,9 +308,8 @@ acpi_rs_vendor_stream ( | |||
321 | buffer += 1; | 308 | buffer += 1; |
322 | } | 309 | } |
323 | 310 | ||
324 | /* | 311 | /* Loop through all of the Vendor Specific fields */ |
325 | * Loop through all of the Vendor Specific fields | 312 | |
326 | */ | ||
327 | for (index = 0; index < linked_list->data.vendor_specific.length; index++) { | 313 | for (index = 0; index < linked_list->data.vendor_specific.length; index++) { |
328 | temp8 = linked_list->data.vendor_specific.reserved[index]; | 314 | temp8 = linked_list->data.vendor_specific.reserved[index]; |
329 | 315 | ||
@@ -331,9 +317,8 @@ acpi_rs_vendor_stream ( | |||
331 | buffer += 1; | 317 | buffer += 1; |
332 | } | 318 | } |
333 | 319 | ||
334 | /* | 320 | /* Return the number of bytes consumed in this operation */ |
335 | * Return the number of bytes consumed in this operation | 321 | |
336 | */ | ||
337 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); | 322 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); |
338 | return_ACPI_STATUS (AE_OK); | 323 | return_ACPI_STATUS (AE_OK); |
339 | } | 324 | } |
@@ -370,40 +355,37 @@ acpi_rs_start_depend_fns_resource ( | |||
370 | u8 *buffer = byte_stream_buffer; | 355 | u8 *buffer = byte_stream_buffer; |
371 | struct acpi_resource *output_struct = (void *) *output_buffer; | 356 | struct acpi_resource *output_struct = (void *) *output_buffer; |
372 | u8 temp8 = 0; | 357 | u8 temp8 = 0; |
373 | acpi_size struct_size = ACPI_SIZEOF_RESOURCE (struct acpi_resource_start_dpf); | 358 | acpi_size struct_size = ACPI_SIZEOF_RESOURCE ( |
359 | struct acpi_resource_start_dpf); | ||
374 | 360 | ||
375 | 361 | ||
376 | ACPI_FUNCTION_TRACE ("rs_start_depend_fns_resource"); | 362 | ACPI_FUNCTION_TRACE ("rs_start_depend_fns_resource"); |
377 | 363 | ||
378 | 364 | ||
379 | /* | 365 | /* The number of bytes consumed are found in the descriptor (Bits:0-1) */ |
380 | * The number of bytes consumed are contained in the descriptor (Bits:0-1) | 366 | |
381 | */ | ||
382 | temp8 = *buffer; | 367 | temp8 = *buffer; |
383 | 368 | ||
384 | *bytes_consumed = (temp8 & 0x01) + 1; | 369 | *bytes_consumed = (temp8 & 0x01) + 1; |
385 | 370 | ||
386 | output_struct->id = ACPI_RSTYPE_START_DPF; | 371 | output_struct->id = ACPI_RSTYPE_START_DPF; |
387 | 372 | ||
388 | /* | 373 | /* Point to Byte 1 if it is used */ |
389 | * Point to Byte 1 if it is used | 374 | |
390 | */ | ||
391 | if (2 == *bytes_consumed) { | 375 | if (2 == *bytes_consumed) { |
392 | buffer += 1; | 376 | buffer += 1; |
393 | temp8 = *buffer; | 377 | temp8 = *buffer; |
394 | 378 | ||
395 | /* | 379 | /* Check Compatibility priority */ |
396 | * Check Compatibility priority | 380 | |
397 | */ | ||
398 | output_struct->data.start_dpf.compatibility_priority = temp8 & 0x03; | 381 | output_struct->data.start_dpf.compatibility_priority = temp8 & 0x03; |
399 | 382 | ||
400 | if (3 == output_struct->data.start_dpf.compatibility_priority) { | 383 | if (3 == output_struct->data.start_dpf.compatibility_priority) { |
401 | return_ACPI_STATUS (AE_AML_BAD_RESOURCE_VALUE); | 384 | return_ACPI_STATUS (AE_AML_BAD_RESOURCE_VALUE); |
402 | } | 385 | } |
403 | 386 | ||
404 | /* | 387 | /* Check Performance/Robustness preference */ |
405 | * Check Performance/Robustness preference | 388 | |
406 | */ | ||
407 | output_struct->data.start_dpf.performance_robustness = (temp8 >> 2) & 0x03; | 389 | output_struct->data.start_dpf.performance_robustness = (temp8 >> 2) & 0x03; |
408 | 390 | ||
409 | if (3 == output_struct->data.start_dpf.performance_robustness) { | 391 | if (3 == output_struct->data.start_dpf.performance_robustness) { |
@@ -412,20 +394,18 @@ acpi_rs_start_depend_fns_resource ( | |||
412 | } | 394 | } |
413 | else { | 395 | else { |
414 | output_struct->data.start_dpf.compatibility_priority = | 396 | output_struct->data.start_dpf.compatibility_priority = |
415 | ACPI_ACCEPTABLE_CONFIGURATION; | 397 | ACPI_ACCEPTABLE_CONFIGURATION; |
416 | 398 | ||
417 | output_struct->data.start_dpf.performance_robustness = | 399 | output_struct->data.start_dpf.performance_robustness = |
418 | ACPI_ACCEPTABLE_CONFIGURATION; | 400 | ACPI_ACCEPTABLE_CONFIGURATION; |
419 | } | 401 | } |
420 | 402 | ||
421 | /* | 403 | /* Set the Length parameter */ |
422 | * Set the Length parameter | 404 | |
423 | */ | ||
424 | output_struct->length = (u32) struct_size; | 405 | output_struct->length = (u32) struct_size; |
425 | 406 | ||
426 | /* | 407 | /* Return the final size of the structure */ |
427 | * Return the final size of the structure | 408 | |
428 | */ | ||
429 | *structure_size = struct_size; | 409 | *structure_size = struct_size; |
430 | return_ACPI_STATUS (AE_OK); | 410 | return_ACPI_STATUS (AE_OK); |
431 | } | 411 | } |
@@ -466,24 +446,20 @@ acpi_rs_end_depend_fns_resource ( | |||
466 | ACPI_FUNCTION_TRACE ("rs_end_depend_fns_resource"); | 446 | ACPI_FUNCTION_TRACE ("rs_end_depend_fns_resource"); |
467 | 447 | ||
468 | 448 | ||
469 | /* | 449 | /* The number of bytes consumed is static */ |
470 | * The number of bytes consumed is static | 450 | |
471 | */ | ||
472 | *bytes_consumed = 1; | 451 | *bytes_consumed = 1; |
473 | 452 | ||
474 | /* | 453 | /* Fill out the structure */ |
475 | * Fill out the structure | 454 | |
476 | */ | ||
477 | output_struct->id = ACPI_RSTYPE_END_DPF; | 455 | output_struct->id = ACPI_RSTYPE_END_DPF; |
478 | 456 | ||
479 | /* | 457 | /* Set the Length parameter */ |
480 | * Set the Length parameter | 458 | |
481 | */ | ||
482 | output_struct->length = (u32) struct_size; | 459 | output_struct->length = (u32) struct_size; |
483 | 460 | ||
484 | /* | 461 | /* Return the final size of the structure */ |
485 | * Return the final size of the structure | 462 | |
486 | */ | ||
487 | *structure_size = struct_size; | 463 | *structure_size = struct_size; |
488 | return_ACPI_STATUS (AE_OK); | 464 | return_ACPI_STATUS (AE_OK); |
489 | } | 465 | } |
@@ -533,9 +509,8 @@ acpi_rs_start_depend_fns_stream ( | |||
533 | *buffer = 0x31; | 509 | *buffer = 0x31; |
534 | buffer += 1; | 510 | buffer += 1; |
535 | 511 | ||
536 | /* | 512 | /* Set the Priority Byte Definition */ |
537 | * Set the Priority Byte Definition | 513 | |
538 | */ | ||
539 | temp8 = 0; | 514 | temp8 = 0; |
540 | temp8 = (u8) ((linked_list->data.start_dpf.performance_robustness & | 515 | temp8 = (u8) ((linked_list->data.start_dpf.performance_robustness & |
541 | 0x03) << 2); | 516 | 0x03) << 2); |
@@ -546,9 +521,8 @@ acpi_rs_start_depend_fns_stream ( | |||
546 | 521 | ||
547 | buffer += 1; | 522 | buffer += 1; |
548 | 523 | ||
549 | /* | 524 | /* Return the number of bytes consumed in this operation */ |
550 | * Return the number of bytes consumed in this operation | 525 | |
551 | */ | ||
552 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); | 526 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); |
553 | return_ACPI_STATUS (AE_OK); | 527 | return_ACPI_STATUS (AE_OK); |
554 | } | 528 | } |
@@ -582,15 +556,13 @@ acpi_rs_end_depend_fns_stream ( | |||
582 | ACPI_FUNCTION_TRACE ("rs_end_depend_fns_stream"); | 556 | ACPI_FUNCTION_TRACE ("rs_end_depend_fns_stream"); |
583 | 557 | ||
584 | 558 | ||
585 | /* | 559 | /* The descriptor field is static */ |
586 | * The descriptor field is static | 560 | |
587 | */ | ||
588 | *buffer = 0x38; | 561 | *buffer = 0x38; |
589 | buffer += 1; | 562 | buffer += 1; |
590 | 563 | ||
591 | /* | 564 | /* Return the number of bytes consumed in this operation */ |
592 | * Return the number of bytes consumed in this operation | 565 | |
593 | */ | ||
594 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); | 566 | *bytes_consumed = ACPI_PTR_DIFF (buffer, *output_buffer); |
595 | return_ACPI_STATUS (AE_OK); | 567 | return_ACPI_STATUS (AE_OK); |
596 | } | 568 | } |