diff --git a/src/mainboard/prodrive/hermes/eeprom.c b/src/mainboard/prodrive/hermes/eeprom.c
index bd5db5c..94811f6 100644
--- a/src/mainboard/prodrive/hermes/eeprom.c
+++ b/src/mainboard/prodrive/hermes/eeprom.c
@@ -14,7 +14,7 @@
 	u8 blob[8] = {0};
 
 	if (!read_write_config(addr, blob, EEPROM_OFFSET_FSP_SIGNATURE, 0, ARRAY_SIZE(blob))) {
-		// Check Signature
+		/* Check signature */
 		if (*(uint64_t *)blob == FSP_UPD_SIGNATURE) {
 			printk(BIOS_DEBUG, "CFG EEPROM: Signature valid.\n");
 			return 1;
@@ -25,7 +25,7 @@
 	return 0;
 }
 
-// Read data from offset and write it to offset in UPD
+/* Read data from offset and write it to offset in UPD */
 bool read_write_config(u8 addr, void *blob, size_t read_offset, size_t write_offset,
 		size_t size)
 {
@@ -52,7 +52,7 @@
 		if (ret < 0)
 			break;
 
-		// Write to UPD
+		/* Write to UPD */
 		uint8_t *writePointer = (uint8_t *)blob + write_offset + i;
 		if (size > 1 && (size % 2 == 0))
 			memcpy(writePointer, tmp, 2);
diff --git a/src/mainboard/prodrive/hermes/ramstage.c b/src/mainboard/prodrive/hermes/ramstage.c
index 18fc915..135d775 100644
--- a/src/mainboard/prodrive/hermes/ramstage.c
+++ b/src/mainboard/prodrive/hermes/ramstage.c
@@ -5,7 +5,7 @@
 #include "variants/baseboard/include/eeprom.h"
 
 static fsp_params parmas_list[] = {
-	// FIXME: Fill with additional options
+	/* FIXME: Fill with additional options */
 };
 
 void mainboard_silicon_init_params(FSP_S_CONFIG *params)
@@ -19,7 +19,7 @@
 
 	params->SataLedEnable = 1;
 
-	// Overwrite params
+	/* Overwrite params */
 	if (!check_signature(I2C_ADDR_EEPROM))
 		return;
 
diff --git a/src/mainboard/prodrive/hermes/romstage.c b/src/mainboard/prodrive/hermes/romstage.c
index a25c43a..2bcd27a 100644
--- a/src/mainboard/prodrive/hermes/romstage.c
+++ b/src/mainboard/prodrive/hermes/romstage.c
@@ -18,7 +18,7 @@
 	memupd->FspmConfig.IedSize = 0x400000;
 	cannonlake_memcfg_init(&memupd->FspmConfig, variant_memcfg_config());
 
-	// Overwrite memupd
+	/* Overwrite memupd */
 	if (!check_signature(I2C_ADDR_EEPROM))
 		return;
 
diff --git a/src/mainboard/prodrive/hermes/variants/baseboard/gpio.c b/src/mainboard/prodrive/hermes/variants/baseboard/gpio.c
index 9c01d24..8735a9e 100644
--- a/src/mainboard/prodrive/hermes/variants/baseboard/gpio.c
+++ b/src/mainboard/prodrive/hermes/variants/baseboard/gpio.c
@@ -194,7 +194,7 @@
 	/* GPP_K20 - CPU_CATERR_PCH_n */
 	PAD_CFG_GPI(GPP_K20, NONE, DEEP),
 	/* GPP_K21 - TPM_INT_n */
-	PAD_CFG_GPI_INT(GPP_K21, NONE, DEEP, OFF), // Trigger?
+	PAD_CFG_GPI_INT(GPP_K21, NONE, DEEP, OFF), /* Trigger? */
 	/* GPP_K22 - NC */
 	PAD_NC(GPP_K22, NONE),
 	/* GPP_K23 - NC */
diff --git a/src/mainboard/prodrive/hermes/variants/baseboard/include/eeprom.h b/src/mainboard/prodrive/hermes/variants/baseboard/include/eeprom.h
index c41ead2..79fda3c 100644
--- a/src/mainboard/prodrive/hermes/variants/baseboard/include/eeprom.h
+++ b/src/mainboard/prodrive/hermes/variants/baseboard/include/eeprom.h
@@ -21,7 +21,7 @@
 #define EEPROM_OFFSET_FSP_CONFIG (EEPROM_OFFSET_FSP_SIGNATURE + sizeof(FSP_UPD_HEADER))
 #define GET_VALUE(x) {.offset = offsetof(FSP_S_CONFIG, x), \
 					.size = member_size(FSP_S_CONFIG, x)}
-#endif // ENV_ROMSTAGE
+#endif /* ENV_ROMSTAGE */
 
 typedef struct {
 	size_t offset;
