commit | a66ac0fc4d65f71b37fdabaef1616dac3241c4cc | [log] [tgz] |
---|---|---|
author | Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com> | Mon Jan 09 17:12:23 2023 +0800 |
committer | Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com> | Tue Mar 07 13:48:01 2023 +0800 |
tree | f058f4bf32b70ac97e564f2d3642980929986b65 | |
parent | 854404e0d65dbbad0ff8689beac81c4319eb0452 [diff] |
Support event multi targets Description: - Support event multi targets. Design: - The origin multi-gpio-monitor doesn't detect the comming events are rising or falling and it can only start one service after events triggered. - We need to do corresponding actions when gpio pin rising or falling. So we modify multi-gpio-monitor config json and read the rising actions and falling actions in it. - When service monitored one gpio status is changed, service will detect that it is a rising or falling event and then call systemd startUnit to start services that set in config json. - For example with config json below: When PowerGood is falling, "PowerGoodFalling.service" and "PowerOff.service" will start. [ { "Name": "PowerGood", "ChipId": "0", "GpioNum": 14, "EventMon": "BOTH", "Targets": { "FALLING": ["PowerGoodFalling.service", "PowerOff.service"], "RISING": ["PowerGoodRising.service", "PowerOn.service"] }, "Continue": true } ] Test Case: Check that corresponding targets start or not - pass Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com> Change-Id: I043d4385b91a04d360a4d50048320db15e63ac74
phosphor-gpio-monitor
This daemon accepts a command line parameter for monitoring single gpio line and take action if requested. This implementation uses GPIO keys and only supports monitoring single GPIO line, for multiple lines, user has to run this daemon seperately for each gpio line.
phosphor-multi-gpio-monitor
This daemon accepts command line parameter as a well-defined GPIO configuration file in json format to monitor list of gpios from config file and take action defined in config based on gpio state change. It uses libgpiod library.
New implementation (phosphor-multi-gpio-monitor) provides multiple gpio line monitoring in single instance of phosphor-multi-gpio-monitor running. It is very easy to add list of gpios into JSON config file and it also supports of GPIO line by name defined in kernel.
There is a phosphor-multi-gpio-monitor.json file that defines details of GPIOs which is required to be monitored. This file can be replaced with a platform specific configuration file via bbappend.
Following are fields in json file
[ { "Name": "PowerButton", "LineName": "POWER_BUTTON", "GpioNum": 34, "ChipId": "gpiochip0", "EventMon": "FALLING", "Target": "PowerButtonDown.service", "Continue": true }, { "Name": "PowerGood", "LineName": "PS_PWROK", "EventMon": "BOTH", "Targets": { "FALLING": ["PowerGoodFalling.service", "PowerOff.service"], "RISING": ["PowerGoodRising.service", "PowerOn.service"] }, "Continue": false }, { "Name": "SystemReset", "GpioNum": 46, "ChipId": "0" } ]