acpigen: Add and use acpigen_write_method.

The sequence of bytes to create a method is used several times in codebase.
Put it into a function with logical arguments rather than duplicating magic
bytes everywhere.

Change-Id: I0e55d8dc7d5e8e92a521c7a83117c470d0614008
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/7347
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
diff --git a/src/arch/x86/boot/acpigen.c b/src/arch/x86/boot/acpigen.c
index 0689273..0eee78a 100644
--- a/src/arch/x86/boot/acpigen.c
+++ b/src/arch/x86/boot/acpigen.c
@@ -395,6 +395,19 @@
 	return len + nlen;
 }
 
+int acpigen_write_method(const char *name, int nargs)
+{
+	int len;
+
+	/* method op */
+	len = acpigen_emit_byte(0x14);
+	len += acpigen_write_len_f();
+	len += acpigen_emit_namestring(name);
+	len += acpigen_emit_byte(nargs & 7);
+
+	return len;
+}
+
 /*
  * Generates a func with max supported P-states.
  */
@@ -407,18 +420,13 @@
     }
 */
 	int len;
-	/* method op */
-	acpigen_emit_byte(0x14);
-	len = acpigen_write_len_f();
-	len += acpigen_emit_namestring("_PPC");
-	/* no fnarg */
-	acpigen_emit_byte(0x00);
+	len = acpigen_write_method("_PPC", 0);
 	/* return */
 	acpigen_emit_byte(0xa4);
 	/* arg */
 	len += acpigen_write_byte(nr);
 	/* add all single bytes */
-	len += 3;
+	len += 1;
 	acpigen_patch_len(len - 1);
 	return len;
 }
@@ -436,18 +444,14 @@
     }
 */
 	int len;
-	/* method op */
-	acpigen_emit_byte(0x14);
-	len = acpigen_write_len_f();
-	len += acpigen_emit_namestring("_PPC");
-	/* no fnarg */
-	acpigen_emit_byte(0x00);
+
+	len = acpigen_write_method("_PPC", 0);
 	/* return */
 	acpigen_emit_byte(0xa4);
 	/* arg */
 	len += acpigen_emit_namestring("PPCM");
 	/* add all single bytes */
-	len += 3;
+	len += 1;
 	acpigen_patch_len(len - 1);
 	return len;
 }
@@ -463,10 +467,7 @@
  */
 	int len;
 
-	len = acpigen_emit_byte(0x14);		/* MethodOp */
-	len += acpigen_write_len_f();		/* PkgLength */
-	len += acpigen_emit_namestring("_TPC");
-	len += acpigen_emit_byte(0x00);		/* No Arguments */
+	len = acpigen_write_method("_TPC", 0);
 	len += acpigen_emit_byte(0xa4);		/* ReturnOp */
 	len += acpigen_emit_namestring(gnvs_tpc_limit);
 	acpigen_patch_len(len - 1);