Messages in this thread | | | Date | Mon, 18 Aug 2014 11:28:09 +0200 | From | Tomasz Nowicki <> | Subject | Re: [RFC] ACPI: Add GPIO-signaled event simulator. |
| |
On 12.08.2014 12:01, Mika Westerberg wrote: > On Fri, Aug 08, 2014 at 02:36:02PM +0200, Linus Walleij wrote: >> On Thu, Jul 24, 2014 at 5:51 PM, Tomasz Nowicki >> <tomasz.nowicki@linaro.org> wrote: >> >>> GPIO signaled events is quite new thing in Linux kernel. >>> AFAIK, there are not many board which can take advantage of it. >>> However, GPIO events are very useful feature during work on ACPI >>> subsystems. >> >> Overall this seems like a pretty nice debug feature. >> >>> This commit emulates GPIO h/w behaviour and consists on read/write >>> operation to debugfs file. GPIO device instance is still required in DSDT >>> table along with _AEI resources and event methods. >>> >>> Reading from file provides pin to GPIO device map e.g. : >>> $ cat /sys/kernel/debug/acpi/gpio_event >>> GPIO device name: /__SB.GPI0 >>> Available GPIO pin map: >>> /__SB.GPI0 <-> pin 0x100 >>> >>> Based on that, user can trigger method corresponding to device pin number: >>> $ echo "/__SB.GPI0 0x100" > /sys/kernel/debug/acpi/gpio_event >> >> I need input from Rafael and Mika as to whether this is a >> good interface. > > Maybe it would make sense to move this into drivers/gpio/gpiolib-acpi.c > and hide it behind some Kconfig entry? > > Since you already need to have DSDT/SSDT table for this to provide the > GPIO device, _AEI and the event methods, I would rather make it so that > acpi_gpiochip_request_interrupt() will add debugfs entry for each GPIO > it finds in _AEI, like: > > /sys/kernel/debug/acpi/events/<GPIO DEVICE>/n > > And you could trigger it by writing '1' or something like that to that > file. >
Thanks for comments. The idea of available gpio events list under /sys/kernel/debug/acpi/events/<GPIO DEVICE>/n is worth adding.
However, acpi_gpiochip_request_interrupt() would be called if we would have real GPIO H/W and related driver. Initial idea of this patch was to avoid that restriction. So there are two cases: 1. If we have GPIO chip, it is already described in DSDT/SSDT and using this patch, user could trigger events by software too. 2. None of GPIO chip, so we need to add GPIO/_AEI etc. descrition to DSDT/SSDT and pretend we have GPIO chip on board.
Regards, Tomasz Nowicki
| |