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 <spinler@us.ibm.com>
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 @@
 		}
 	}
 
+	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 @@
 	{
 		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 @@
 	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 @@
 	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; }