Hi, 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. > \_SB_.I2C4._STA > \_SB_.I2C4.TCS2._STA > \_SB_.I2C4.SSCN > \_SB_.I2C4.FMCN > \_SB_.I2C4.FPCN > \_SB_.I2C4.HSCN > \_SB_.I2C4._STA > \_SB_.I2C4.TCS2._STA > \_SB_.I2C4._PS3 > \_SB_.I2C4._STA > \_SB_.I2C4.TCS2._STA > \_SB_.I2C4._PS0 > \_SB_.I2C4.TCS2._PS3 > \_SB_.I2C4.TCS2._PS0 This is the sequence called by Linux (shortened, double entries are omitted). Beside the status calls I can't see anything special. Regards, Johannes Am 04.08.2017 um 11:12 schrieb Alexander Boettcher: > Hi, > > 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: >> >>> \_SB_.I2C4.SSCN >>> \_SB_.I2C4.FMCN >>> \_SB_.I2C4.FPCN >>> \_SB_.I2C4.HSCN > > 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, > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main