ACPI: change arguments to internal acpi_find_dsd()
acpi_find_dsd() is not a bus function and we only need the acpi_device (ad). The only caller has already looked up the ad (from ivars) for us. Directly pass the ad to acpi_find_dsd() instead of bus, dev and remove the extra call to device_get_ivars(); the changed argument also means we now call AcpiEvaluateObject directly on the handle. This optimisation was done a while ago while debugging a driver which ended up with a bad bus, dev combination making the old version fail. MFC after: 2 weeks Reviewed by: mw Differential Revision: https://reviews.freebsd.org/D35558
This commit is contained in:
parent
513ce835b5
commit
945eaca155
@ -156,7 +156,7 @@ static ACPI_STATUS acpi_device_scan_cb(ACPI_HANDLE h, UINT32 level,
|
||||
void *context, void **retval);
|
||||
static ACPI_STATUS acpi_device_scan_children(device_t bus, device_t dev,
|
||||
int max_depth, acpi_scan_cb_t user_fn, void *arg);
|
||||
static ACPI_STATUS acpi_find_dsd(device_t bus, device_t dev);
|
||||
static ACPI_STATUS acpi_find_dsd(struct acpi_device *ad);
|
||||
static int acpi_isa_pnp_probe(device_t bus, device_t child,
|
||||
struct isa_pnp_id *ids);
|
||||
static void acpi_platform_osc(device_t dev);
|
||||
@ -1864,7 +1864,7 @@ acpi_device_get_prop(device_t bus, device_t dev, ACPI_STRING propname,
|
||||
return (AE_BAD_PARAMETER);
|
||||
if (ad->dsd_pkg == NULL) {
|
||||
if (ad->dsd.Pointer == NULL) {
|
||||
status = acpi_find_dsd(bus, dev);
|
||||
status = acpi_find_dsd(ad);
|
||||
if (ACPI_FAILURE(status))
|
||||
return (status);
|
||||
} else {
|
||||
@ -1893,18 +1893,16 @@ acpi_device_get_prop(device_t bus, device_t dev, ACPI_STRING propname,
|
||||
}
|
||||
|
||||
static ACPI_STATUS
|
||||
acpi_find_dsd(device_t bus, device_t dev)
|
||||
acpi_find_dsd(struct acpi_device *ad)
|
||||
{
|
||||
const ACPI_OBJECT *dsd, *guid, *pkg;
|
||||
struct acpi_device *ad;
|
||||
ACPI_STATUS status;
|
||||
|
||||
ad = device_get_ivars(dev);
|
||||
ad->dsd.Length = ACPI_ALLOCATE_BUFFER;
|
||||
ad->dsd.Pointer = NULL;
|
||||
ad->dsd_pkg = NULL;
|
||||
|
||||
status = ACPI_EVALUATE_OBJECT(bus, dev, "_DSD", NULL, &ad->dsd);
|
||||
status = AcpiEvaluateObject(ad->ad_handle, "_DSD", NULL, &ad->dsd);
|
||||
if (ACPI_FAILURE(status))
|
||||
return (status);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user