Mario Limonciello 719e1f561a ACPI: Execute platform _OSC also with query bit clear
The platform _OSC can change the hardware state when query bit is not
set. According to ACPI spec it is recommended that the OS runs _OSC with
query bit set until the platform does not mask any of the capabilities.
Then it should run it with query bit clear in order to actually commit
the changes. Linux has not been doing this for the reasons that there
has not been anything to commit, until now.

The ACPI 6.4 introduced _OSC for USB4 to allow the OS to negotiate
native control over USB4 tunneling. The platform might implement this so
that it only activates the software connection manager path when the OS
calls the _OSC with the query bit clear. Otherwise it may default to the
firmware connection manager, for instance.

For this reason modify the _OSC support so that we first execute it with
query bit set, then use the returned value as base of the features we
want to control and run the _OSC again with query bit clear. This also
follows what Windows is doing.

Also rename the function to better match what it does.

Signed-off-by: Mario Limonciello <mario.limonciello@dell.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
2021-02-04 10:45:25 +03:00
..
2020-12-24 12:28:35 -08:00
2020-12-16 16:38:41 -08:00
2020-12-18 12:38:28 -08:00
2020-12-22 17:59:11 +01:00
2020-12-16 16:38:41 -08:00
2020-12-24 12:18:11 -08:00
2020-12-17 12:52:23 -08:00
2020-12-24 12:14:29 -08:00
2020-12-15 16:06:14 -08:00
2020-12-16 11:49:46 -08:00
2020-12-15 16:30:31 -08:00
2020-12-16 12:57:51 -08:00
2020-12-16 13:58:47 -08:00
2020-12-20 10:44:05 -08:00
2020-12-09 19:26:02 -06:00
2020-12-24 12:28:35 -08:00
2020-12-16 16:38:41 -08:00
2020-12-16 13:34:31 -08:00
2020-12-17 13:34:25 -08:00
2020-12-15 15:57:25 -08:00
2020-12-16 13:42:26 -08:00
2020-12-15 14:02:26 -08:00
2020-12-15 15:24:52 +01:00
2020-12-25 20:17:40 -08:00
2020-12-23 15:06:22 -08:00
2020-12-15 22:50:12 +11:00
2020-12-19 11:51:32 -08:00
2020-12-16 16:38:41 -08:00
2020-12-16 16:38:41 -08:00
2020-12-20 10:12:06 -08:00
2020-12-24 12:28:35 -08:00
2020-12-17 13:34:25 -08:00
2020-12-17 13:41:27 -08:00
2020-12-10 10:45:36 +01:00
2020-12-18 12:38:28 -08:00
2020-12-16 13:34:31 -08:00
2020-12-16 16:38:41 -08:00
2020-12-17 13:41:27 -08:00
2020-12-17 13:34:25 -08:00
2020-12-20 10:44:05 -08:00
2020-12-18 12:38:28 -08:00
2020-12-09 19:44:34 +01:00
2020-12-23 15:01:49 -08:00