GPIO abstraction for power and host control

In libopenbmc_intf/power_gpio.c there are GPIO abstractions for power
related GPIOs.
Host control related GPIOs need to do the same abstraction.

The changes include:
1. Add host control related GPIOs in gpio_configs and update
system_manager.py
2. Update control_host_obj.c to use the abstracted GPIOs
3. Update GPIO_CONFIGS for all machines and add host control related
GPIOs

power_gpio will be renamed to gpio_configs in next commit;

Resolves openbmc/openbmc#814

Change-Id: I7832065d495d7d64c5df2f5b177005b97e68900a
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/op-pwrctl/power_control_obj.c b/op-pwrctl/power_control_obj.c
index 9cf8ce4..493b588 100644
--- a/op-pwrctl/power_control_obj.c
+++ b/op-pwrctl/power_control_obj.c
@@ -19,7 +19,7 @@
 
 static int g_pci_reset_held = 1;
 
-static PowerGpio g_power_gpio;
+static GpioConfigs g_gpio_configs;
 
 static GDBusObjectManagerServer *manager = NULL;
 
@@ -52,14 +52,14 @@
 	}
 	uint8_t pgood_state;
 
-	int rc = gpio_open(&g_power_gpio.power_good_in);
+	int rc = gpio_open(&g_gpio_configs.power_gpio.power_good_in);
 	if(rc != GPIO_OK) {
 		g_print("ERROR PowerControl: GPIO open error (gpio=%s,rc=%d)\n",
-				g_power_gpio.power_good_in.name, rc);
+				g_gpio_configs.power_gpio.power_good_in.name, rc);
 		return FALSE;
 	}
-	rc = gpio_read(&g_power_gpio.power_good_in, &pgood_state);
-	gpio_close(&g_power_gpio.power_good_in);
+	rc = gpio_read(&g_gpio_configs.power_gpio.power_good_in, &pgood_state);
+	gpio_close(&g_gpio_configs.power_gpio.power_good_in);
 	if(rc == GPIO_OK)
 	{
 		//if changed, set property and emit signal
@@ -80,9 +80,9 @@
 				control_emit_goto_system_state(control,"HOST_POWERED_ON");
 			}
 
-			for(i = 0; i < g_power_gpio.num_reset_outs; i++)
+			for(i = 0; i < g_gpio_configs.power_gpio.num_reset_outs; i++)
 			{
-				GPIO *reset_out = &g_power_gpio.reset_outs[i];
+				GPIO *reset_out = &g_gpio_configs.power_gpio.reset_outs[i];
 				rc = gpio_open(reset_out);
 				if(rc != GPIO_OK)
 				{
@@ -91,23 +91,23 @@
 					continue;
 				}
 
-				reset_state = pgood_state ^ g_power_gpio.reset_pols[i];
+				reset_state = pgood_state ^ g_gpio_configs.power_gpio.reset_pols[i];
 				g_print("PowerControl: pgood: %d, setting reset %s to %d\n",
-					(int)pgood_state, reset_out->name, (int)reset_state);
+						(int)pgood_state, reset_out->name, (int)reset_state);
 				gpio_write(reset_out, reset_state);
 				gpio_close(reset_out);
 			}
 
-			for(i = 0; i < g_power_gpio.num_pci_reset_outs; i++)
+			for(i = 0; i < g_gpio_configs.power_gpio.num_pci_reset_outs; i++)
 			{
-				GPIO *pci_reset_out = &g_power_gpio.pci_reset_outs[i];
+				GPIO *pci_reset_out = &g_gpio_configs.power_gpio.pci_reset_outs[i];
 				if(pgood_state == 1)
 				{
 					/*
 					 * When powering on, hold PCI reset until
 					 * the processor can forward clocks and control reset.
 					 */
-					if(g_power_gpio.pci_reset_holds[i])
+					if(g_gpio_configs.power_gpio.pci_reset_holds[i])
 					{
 						g_print("Holding pci reset: %s\n", pci_reset_out->name);
 						continue;
@@ -121,16 +121,16 @@
 					continue;
 				}
 
-				reset_state = pgood_state ^ g_power_gpio.pci_reset_pols[i];
+				reset_state = pgood_state ^ g_gpio_configs.power_gpio.pci_reset_pols[i];
 				g_print("PowerControl: pgood: %d, setting pci reset %s to %d\n",
-					(int)pgood_state, pci_reset_out->name, (int)reset_state);
+						(int)pgood_state, pci_reset_out->name, (int)reset_state);
 				gpio_write(pci_reset_out, reset_state);
 				gpio_close(pci_reset_out);
 			}
 		}
 	} else {
 		g_print("ERROR PowerControl: GPIO read error (gpio=%s,rc=%d)\n",
-				g_power_gpio.power_good_in.name, rc);
+				g_gpio_configs.power_gpio.power_good_in.name, rc);
 		//return false so poll won't get called anymore
 		return FALSE;
 	}
@@ -177,23 +177,23 @@
 	if(strcmp(boot_progress, "FW Progress, Baseboard Init") == 0)
 		return;
 
-	rc = gpio_open(&g_power_gpio.power_good_in);
+	rc = gpio_open(&g_gpio_configs.power_gpio.power_good_in);
 	if(rc != GPIO_OK)
 	{
 		g_print("ERROR PowerControl: on_boot_progress(): GPIO open error (gpio=%s,rc=%d)\n",
-			g_power_gpio.power_good_in.name, rc);
+			g_gpio_configs.power_gpio.power_good_in.name, rc);
 		return;
 	}
-	rc = gpio_read(&g_power_gpio.power_good_in, &pgood_state);
-	gpio_close(&g_power_gpio.power_good_in);
+	rc = gpio_read(&g_gpio_configs.power_gpio.power_good_in, &pgood_state);
+	gpio_close(&g_gpio_configs.power_gpio.power_good_in);
 	if(rc != GPIO_OK || pgood_state != 1)
 		return;
 
-	for(i = 0; i < g_power_gpio.num_pci_reset_outs; i++)
+	for(i = 0; i < g_gpio_configs.power_gpio.num_pci_reset_outs; i++)
 	{
-		GPIO *pci_reset_out = &g_power_gpio.pci_reset_outs[i];
+		GPIO *pci_reset_out = &g_gpio_configs.power_gpio.pci_reset_outs[i];
 
-		if(!g_power_gpio.pci_reset_holds[i])
+		if(!g_gpio_configs.power_gpio.pci_reset_holds[i])
 			continue;
 		rc = gpio_open(pci_reset_out);
 		if(rc != GPIO_OK)
@@ -203,9 +203,9 @@
 			continue;
 		}
 
-		reset_state = pgood_state ^ g_power_gpio.pci_reset_pols[i];
+		reset_state = pgood_state ^ g_gpio_configs.power_gpio.pci_reset_pols[i];
 		g_print("PowerControl: pgood: %d, setting pci reset %s to %d\n",
-			(int)pgood_state, pci_reset_out->name, (int)reset_state);
+				(int)pgood_state, pci_reset_out->name, (int)reset_state);
 		gpio_write(pci_reset_out, reset_state);
 		gpio_close(pci_reset_out);
 		g_print("Released pci reset: %s - %s\n", pci_reset_out->name, boot_progress);
@@ -244,17 +244,17 @@
 			} else {
 				control_emit_goto_system_state(control,"HOST_POWERING_OFF");
 			}
-			for (i = 0; i < g_power_gpio.num_power_up_outs; i++) {
-				GPIO *power_pin = &g_power_gpio.power_up_outs[i];
+			for (i = 0; i < g_gpio_configs.power_gpio.num_power_up_outs; i++) {
+				GPIO *power_pin = &g_gpio_configs.power_gpio.power_up_outs[i];
 				error = gpio_open(power_pin);
 				if(error != GPIO_OK) {
 					g_print("ERROR PowerControl: GPIO open error (gpio=%s,rc=%d)\n",
-							g_power_gpio.power_up_outs[i].name, error);
+							g_gpio_configs.power_gpio.power_up_outs[i].name, error);
 					continue;
 				}
-				power_up_out = state ^ !g_power_gpio.power_up_pols[i];
+				power_up_out = state ^ !g_gpio_configs.power_gpio.power_up_pols[i];
 				g_print("PowerControl: setting power up %s to %d\n",
-						g_power_gpio.power_up_outs[i].name, (int)power_up_out);
+						g_gpio_configs.power_gpio.power_up_outs[i].name, (int)power_up_out);
 				error = gpio_write(power_pin, power_up_out);
 				if(error != GPIO_OK) {
 					continue;
@@ -429,11 +429,11 @@
 	g_dbus_object_manager_server_export(manager, G_DBUS_OBJECT_SKELETON(object));
 	g_object_unref(object);
 
-	if(read_power_gpio(connection, &g_power_gpio) != TRUE) {
+	if(read_gpios(connection, &g_gpio_configs) != TRUE) {
 		g_print("ERROR PowerControl: could not read power GPIO configuration\n");
 	}
 
-	int rc = set_up_gpio(connection, &g_power_gpio, control_power);
+	int rc = set_up_gpio(connection, &g_gpio_configs.power_gpio, control_power);
 	if(rc != GPIO_OK) {
 		g_print("ERROR PowerControl: GPIO setup (rc=%d)\n",rc);
 	}
@@ -462,7 +462,7 @@
 		const gchar *name,
 		gpointer user_data)
 {
-	free_power_gpio(&g_power_gpio);
+	free_gpios(&g_gpio_configs);
 }
 
 /*----------------------------------------------------------------*/