From 0f0946bef6fb613b65b344b966e44452270d0e82 Mon Sep 17 00:00:00 2001 From: Matt Spinler Date: Tue, 7 Aug 2018 16:26:55 -0500 Subject: Call gpio_inits_done() from GPIO consumers This frees the cJSON structures that were created in the gpio_init() calls. Doing it this way allows the JSON to be parsed only once across multiple gpio_init() calls. Change-Id: Ia2c37c941b458fe271287b441c30b00dcb67d742 Signed-off-by: Matt Spinler --- op-pwrctl/power_control_obj.c | 2 ++ pciedetect/pcie_slot_present_obj.c | 1 + pwrbutton/button_power_obj.c | 1 + rstbutton/button_reset_obj.c | 1 + 4 files changed, 5 insertions(+) diff --git a/op-pwrctl/power_control_obj.c b/op-pwrctl/power_control_obj.c index e9c9673..9c2b250 100644 --- a/op-pwrctl/power_control_obj.c +++ b/op-pwrctl/power_control_obj.c @@ -385,6 +385,8 @@ set_up_gpio(GDBusConnection *connection, } } + gpio_inits_done(); + rc = gpio_open(&power_gpio->power_good_in); if(rc != GPIO_OK) { return rc; diff --git a/pciedetect/pcie_slot_present_obj.c b/pciedetect/pcie_slot_present_obj.c index 01aeff4..4828051 100644 --- a/pciedetect/pcie_slot_present_obj.c +++ b/pciedetect/pcie_slot_present_obj.c @@ -126,6 +126,7 @@ get_presence(GDBusConnection* connection, GPIO* gpio, uint8_t* present) { printf("ERROR pcie_slot_present: GPIO error %s (rc=%d)\n",gpio->name,rc); } + gpio_inits_done(); return rc; } diff --git a/pwrbutton/button_power_obj.c b/pwrbutton/button_power_obj.c index 7b27986..58a9cad 100644 --- a/pwrbutton/button_power_obj.c +++ b/pwrbutton/button_power_obj.c @@ -114,6 +114,7 @@ on_bus_acquired(GDBusConnection *connection, int rc = GPIO_OK; do { rc = gpio_init(connection,&gpio_button); + gpio_inits_done(); if(rc != GPIO_OK) { break; } rc = gpio_open_interrupt(&gpio_button,on_button_interrupt,object); if(rc != GPIO_OK) { break; } diff --git a/rstbutton/button_reset_obj.c b/rstbutton/button_reset_obj.c index 8e1c1ac..245c3c1 100644 --- a/rstbutton/button_reset_obj.c +++ b/rstbutton/button_reset_obj.c @@ -114,6 +114,7 @@ on_bus_acquired(GDBusConnection *connection, int rc = GPIO_OK; do { rc = gpio_init(connection,&gpio_button); + gpio_inits_done(); if(rc != GPIO_OK) { break; } rc = gpio_open_interrupt(&gpio_button,on_button_interrupt,object); if(rc != GPIO_OK) { break; } -- cgit v1.2.1