ACPI _PS0 failing with UNINITIALIZED_ARG
Johannes.Kliemann at ...250...
Fri Aug 4 13:05:06 CEST 2017
thanks for your answer. Well the I2C controller is already enabled. I
can successfully run \_SB_.I2C4._PS(0|3). I even can measure the effect
since the magic value in the mmio is only available if _PS0 was called
on the I2C controller.
I have traced the initialization on Linux (exactly said the calls of
evaluate object) and there doesn't seem to be anything unusual.
This is the sequence called by Linux (shortened, double entries are
omitted). Beside the status calls I can't see anything special.
Am 04.08.2017 um 11:12 schrieb Alexander Boettcher:
> On 03.08.2017 13:29, Johannes Kliemann wrote:
>>> I have a touchscreen controller (which is an I2C slave) that I need to enable via APCI. This should be done by calling the _PS0 ACPI method. I call this method by using AcpiEvaluateObject with no arguments and no return values.
> just guessing. Since the touchscreen controller is a slave of the I2C
> controller, you have to have a (ACPI) driver to enable the I2C and
> potentially also the right I2C slaves.
>>> what am I missing to successfully enable the touchscreen device via ACPI? Is there something the Linux kernel is initializing implicitly (I couldn't find something like this)?
>> The current workaround for this issue is to use the GPIO pins to enable
>> the controller. But this isn't the desired way since it requires an
>> additional GPIO driver that takes ~100 LOC and also a separate ACPI
>> initialization for this driver.
> again, just guessing. Your workaround sounds bit like a part of the
> initialize sequence of the I2C controller.
>> Besides that other functions that are needed to get initial parameters
>> return errors. On the specific device I have the following examples:
> again, just guessing. Probably you need/have to find the right acpi
> method to initialize the I2C controller, so that the slaves, as your
> touchscreen, may work properly.
>>> what am I missing to successfully enable the touchscreen device via
> ACPI? Is there something the Linux kernel is initializing implicitly (I
> couldn't find something like this)?
> ... just guessing: the Linux kernel initialize the I2C controller for
> sure fully, thats why the I2C method in the ACPI tables of your I2C
> slave work in Linux ?
> If all my guessing above is wrong, another direction could be to check
> the version of the acpica library used by Genode and the ACPICA version
> you have in the Linux kernel. I know that ACPICA library code and Linux
> code does not exactly match (but they have common roots), so that one
> may possibly deduce the difference in the behavior. Maybe a update to a
> new ACPICA library version for Genode can help (since there a features
> and fixes in the upstream ACPICA library according to the changelog) ?
> Good luck,
More information about the users