Ошибка ACPI _PS0 с UNINITIALIZED_ARG

У меня есть контроллер сенсорного экрана (который является подчиненным I2C), который мне нужно включить через APCI. Это должно быть сделано путем вызова _PS0 Метод ACPI. Я называю этот метод с помощью AcpiEvaluateObject без аргументов и без возвращаемых значений.

AcpiEvaluateObject(nullptr, (ACPI_STRING)"\\_SB.I2C4._PS0", nullptr, nullptr); // returns AE_OK
AcpiEvaluateObject(nullptr, (ACPI_STRING)"\\_SB.I2C4.TCS2._PS0", nullptr, nullptr); // returns AE_AML_UNINITIALIZED_ARG

При вызове этого метода на родительском объекте (I2C4) все идет нормально но вызывая его на контроллере сенсорного экрана (TCS2), это не удается. Что также заставляет меня задуматься о том, что он возвращается AE_AML_UNINITIALIZED_ARG хотя это не требует никаких аргументов (в соответствии с DSDT).

Вызов _CRS Метод на том же объекте также работает без проблем. Я также изучил исходный код ядра Linux, как они изменяют состояния питания ACPI и используют точно такой же механизм. Сводится к использованию acpi_evaluate_object в acpi_dev_pm_explicit_set который также, кажется, работает на устройстве с сенсорным экраном.

Я не использую Linux, но Genode и библиотеку Acpica.

что мне не хватает, чтобы успешно включить устройство с сенсорным экраном через ACPI? Есть ли что-то, что ядро ​​Linux инициализирует неявно (я не мог найти что-то подобное)?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …