amd/pi/hudson: Add SERIRQ setup

Enable SERIRQ in quiet or continuous mode based on Kconfig.
Defaults to quite mode.

Change-Id: Ib40a84719fcc3a5d6b3000c3c0412f1bcf629609
Signed-off-by: Marc Jones <marcj303@gmail.com>
Reviewed-on: https://review.coreboot.org/19234
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
diff --git a/src/southbridge/amd/pi/hudson/Kconfig b/src/southbridge/amd/pi/hudson/Kconfig
index bb58722..233260f 100644
--- a/src/southbridge/amd/pi/hudson/Kconfig
+++ b/src/southbridge/amd/pi/hudson/Kconfig
@@ -213,6 +213,12 @@
 	  option to manually attach the generated amdfw.rom at an
 	  offset of 0x20000 from the bottom of the coreboot ROM image.
 
+config SERIRQ_CONTINUOUS_MODE
+	bool
+	default n
+	help
+	  Set this option to y for serial IRQ in continuous mode.
+	  Otherwise it is in quiet mode.
 endif
 
 config HUDSON_UART
diff --git a/src/southbridge/amd/pi/hudson/lpc.c b/src/southbridge/amd/pi/hudson/lpc.c
index 1dacfd0..38c5733 100644
--- a/src/southbridge/amd/pi/hudson/lpc.c
+++ b/src/southbridge/amd/pi/hudson/lpc.c
@@ -83,6 +83,13 @@
 
 	/* Initialize i8254 timers */
 	setup_i8254 ();
+
+	/* Setup SERIRQ, enable continuous mode */
+	byte = (BIT(4) | BIT(7));
+	if (!IS_ENABLED(CONFIG_SERIRQ_CONTINUOUS_MODE))
+		byte |= BIT(6);
+
+	pm_write8(PM_SERIRQ_CONF, byte);
 }
 
 static void hudson_lpc_read_resources(device_t dev)