diff options
Diffstat (limited to 'drivers/acpi/utils.c')
| -rw-r--r-- | drivers/acpi/utils.c | 28 | 
1 files changed, 27 insertions, 1 deletions
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index 834f35c4bf8d..371ac12d25b1 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c @@ -149,6 +149,21 @@ acpi_extract_package(union acpi_object *package,  				break;  			}  			break; +		case ACPI_TYPE_LOCAL_REFERENCE: +			switch (format_string[i]) { +			case 'R': +				size_required += sizeof(void *); +				tail_offset += sizeof(void *); +				break; +			default: +				printk(KERN_WARNING PREFIX "Invalid package element" +					      " [%d] got reference," +					      " expecting [%c]\n", +					      i, format_string[i]); +				return AE_BAD_DATA; +				break; +			} +			break;  		case ACPI_TYPE_PACKAGE:  		default: @@ -247,7 +262,18 @@ acpi_extract_package(union acpi_object *package,  				break;  			}  			break; - +		case ACPI_TYPE_LOCAL_REFERENCE: +			switch (format_string[i]) { +			case 'R': +				*(void **)head = +				    (void *)element->reference.handle; +				head += sizeof(void *); +				break; +			default: +				/* Should never get here */ +				break; +			} +			break;  		case ACPI_TYPE_PACKAGE:  			/* TBD: handle nested packages... */  		default:  | 
