soc/intel/common: Enable decoding of the COMB range to LPC based on Kconfig

By default all Intel platform has enable IO decode range for COMA if
CONFIG_DRIVERS_UART_8250IO is selected.

With this patch, COMB will get enable based on
CONFIG_SOC_INTEL_COMMON_BLOCK_LPC_COMB_ENABLE Kconfig selection.

Also make lpc_enable_fixed_io_ranges() function returns Enabled I/O bits to avoid
an additional pci configuration read to get the same data.

Change-Id: I884dbcc8a37cf8551001d0ca61910c986b903ebc
Signed-off-by: Subrata Banik <subrata.banik@intel.com>
Reviewed-on: https://review.coreboot.org/25045
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Rizwan Qureshi <rizwan.qureshi@intel.com>
diff --git a/src/soc/intel/common/block/lpc/lpc_lib.c b/src/soc/intel/common/block/lpc/lpc_lib.c
index b4b3d1b..aeac441 100644
--- a/src/soc/intel/common/block/lpc/lpc_lib.c
+++ b/src/soc/intel/common/block/lpc/lpc_lib.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of the coreboot project.
  *
- * Copyright (C) 2016 Intel Corp.
+ * Copyright (C) 2016-2018 Intel Corp.
  * (Written by Alexandru Gagniuc <alexandrux.gagniuc@intel.com> for Intel Corp.)
  *
  * This program is free software; you can redistribute it and/or modify
@@ -25,13 +25,15 @@
 #include "lpc_def.h"
 #include <soc/pci_devs.h>
 
-void lpc_enable_fixed_io_ranges(uint16_t io_enables)
+uint16_t lpc_enable_fixed_io_ranges(uint16_t io_enables)
 {
 	uint16_t reg_io_enables;
 
 	reg_io_enables = pci_read_config16(PCH_DEV_LPC, LPC_IO_ENABLES);
 	io_enables |= reg_io_enables;
 	pci_write_config16(PCH_DEV_LPC, LPC_IO_ENABLES, io_enables);
+
+	return io_enables;
 }
 
 /*
@@ -225,15 +227,20 @@
 
 void lpc_io_setup_comm_a_b(void)
 {
-	/*
-	* Setup I/O Decode Range Register for LPC
-	* ComA Range 3F8h-3FFh [2:0]
-	* ComB Range 2F8h-2FFh [6:4]
-	*/
-	pci_write_config16(PCH_DEV_LPC, LPC_IO_DECODE,
-			LPC_IOD_COMA_RANGE | LPC_IOD_COMB_RANGE);
+	/* ComA Range 3F8h-3FFh [2:0] */
+	uint16_t com_ranges = LPC_IOD_COMA_RANGE;
+	uint16_t com_enable = LPC_IOE_COMA_EN;
+
+	/* ComB Range 2F8h-2FFh [6:4] */
+	if (IS_ENABLED(CONFIG_SOC_INTEL_COMMON_BLOCK_LPC_COMB_ENABLE)) {
+		com_ranges |= LPC_IOD_COMB_RANGE;
+		com_enable |= LPC_IOE_COMB_EN;
+	}
+
+	/* Setup I/O Decode Range Register for LPC */
+	pci_write_config16(PCH_DEV_LPC, LPC_IO_DECODE, com_ranges);
 	/* Enable ComA and ComB Port */
-	lpc_enable_fixed_io_ranges(LPC_IOE_COMA_EN | LPC_IOE_COMB_EN);
+	lpc_enable_fixed_io_ranges(com_enable);
 }
 
 static void lpc_set_gen_decode_range(