google/oak: Add initial support for Rowan

Update GPIO controls and mainboard configurations for Rowan.

BUG=chrome-os-partner:62672
BRANCH=none
TEST=emerge-rowan coreboot

Change-Id: I18ebc3ccf4c7d051839d7c50e9b0682ef8f09830
Signed-off-by: Yidi Lin <yidi.lin@mediatek.com>
Reviewed-on: https://chromium-review.googlesource.com/430557
Reviewed-by: Julius Werner <jwerner@chromium.org>
diff --git a/src/mainboard/google/oak/Kconfig b/src/mainboard/google/oak/Kconfig
index 01bd0bc..083ed9c 100644
--- a/src/mainboard/google/oak/Kconfig
+++ b/src/mainboard/google/oak/Kconfig
@@ -81,6 +81,7 @@
 	default "Oak" if BOARD_GOOGLE_OAK
 	default "Elm" if BOARD_GOOGLE_ELM
 	default "Hana" if BOARD_GOOGLE_HANA
+	default "Rowan" if BOARD_GOOGLE_ROWAN
 
 config GBB_HWID
 	string
@@ -88,6 +89,7 @@
 	default "OAK TEST 6858" if BOARD_GOOGLE_OAK
 	default "ELM TEST 3839" if BOARD_GOOGLE_ELM
 	default "HANA TEST 5855" if BOARD_GOOGLE_HANA
+	default "ROWAN TEST 5855" if BOARD_GOOGLE_ROWAN
 
 # All Oak-derivatives count their board IDs as 0 being equivalent to Oak rev6.
 config BOARD_ID_ADJUSTMENT
@@ -95,5 +97,6 @@
 	default 0 if BOARD_GOOGLE_OAK
 	default 7 if BOARD_GOOGLE_ELM
 	default 11 if BOARD_GOOGLE_HANA
+	default 15 if BOARD_GOOGLE_ROWAN
 
 endif # BOARD_GOOGLE_OAK
diff --git a/src/mainboard/google/oak/Kconfig.name b/src/mainboard/google/oak/Kconfig.name
index 95e4a3d..40a97e6 100644
--- a/src/mainboard/google/oak/Kconfig.name
+++ b/src/mainboard/google/oak/Kconfig.name
@@ -9,3 +9,7 @@
 config BOARD_GOOGLE_HANA
 	bool "Hana"
 	select BOARD_GOOGLE_OAK_COMMON
+
+config BOARD_GOOGLE_ROWAN
+	bool "ROWAN"
+	select BOARD_GOOGLE_OAK_COMMON
diff --git a/src/mainboard/google/oak/chromeos.c b/src/mainboard/google/oak/chromeos.c
index 60c24e7..fe4574e 100644
--- a/src/mainboard/google/oak/chromeos.c
+++ b/src/mainboard/google/oak/chromeos.c
@@ -26,7 +26,7 @@
 	gpio_input(WRITE_PROTECT);
 	gpio_input_pullup(EC_IN_RW);
 	gpio_input_pullup(EC_IRQ);
-	gpio_input_pullup(LID);
+	gpio_input(LID);
 	gpio_input_pullup(POWER_BUTTON);
 	if (board_id() + CONFIG_BOARD_ID_ADJUSTMENT < 5)
 		gpio_output(EC_SUSPEND_L, 1);
diff --git a/src/mainboard/google/oak/gpio.h b/src/mainboard/google/oak/gpio.h
index ba74c88..3c0f51a 100644
--- a/src/mainboard/google/oak/gpio.h
+++ b/src/mainboard/google/oak/gpio.h
@@ -17,8 +17,9 @@
 #define __MAINBOARD_GOOGLE_OAK_GPIO_H__
 #include <soc/pinmux.h>
 
-#define LID ((board_id() + CONFIG_BOARD_ID_ADJUSTMENT < 7) ? \
-	PAD_EINT12 : PAD_SPI_CK)
+#define LID ((IS_ENABLED(CONFIG_BOARD_GOOGLE_ROWAN)) ? PAD_KPROW1 \
+	: ((board_id() + CONFIG_BOARD_ID_ADJUSTMENT < 7) ? PAD_EINT12 \
+	: PAD_SPI_CK))
 
 
 enum {
diff --git a/src/mainboard/google/oak/mainboard.c b/src/mainboard/google/oak/mainboard.c
index ad5ecd4..7cb6a68 100644
--- a/src/mainboard/google/oak/mainboard.c
+++ b/src/mainboard/google/oak/mainboard.c
@@ -127,11 +127,15 @@
 	setup_usb_host();
 
 	if (board_id() + CONFIG_BOARD_ID_ADJUSTMENT > 3) {
-		/* Enable current limit */
-		gpio_output(PAD_CM2MCLK, 1);
-		/* Configure USB OC pins*/
+		/* Type C port 0 Over current alert pin */
 		gpio_input_pullup(PAD_MSDC3_DSL);
-		gpio_input_pullup(PAD_CMPCLK);
+		if (!IS_ENABLED(CONFIG_BOARD_GOOGLE_ROWAN)) {
+			/* Enable USB3 type A port 0 5V load switch */
+			gpio_output(PAD_CM2MCLK, 1);
+			/* USB3 Type A port 0 power over current alert pin */
+			gpio_input_pullup(PAD_CMPCLK);
+		}
+		/* Type C port 1 over current alert pin */
 		if (board_id() + CONFIG_BOARD_ID_ADJUSTMENT < 7)
 			gpio_input_pullup(PAD_PCM_SYNC);
 	}
@@ -148,6 +152,9 @@
 
 static void configure_usb_hub(void)
 {
+	if (IS_ENABLED(CONFIG_BOARD_GOOGLE_ROWAN))
+		return;
+
 	/* set usb hub reset pin (low active) to high */
 	if (board_id() + CONFIG_BOARD_ID_ADJUSTMENT > 4)
 		gpio_output(PAD_UTXD3, 1);
@@ -257,9 +264,13 @@
 	mtk_dsi_pin_drv_ctrl();
 
 	if (display_init_required()) {
-		configure_backlight();
-		configure_display();
-		display_startup();
+		if (IS_ENABLED(CONFIG_BOARD_GOOGLE_ROWAN)) {
+			/* display initialization for Rowan */
+		} else {
+			configure_backlight();
+			configure_display();
+			display_startup();
+		}
 	} else {
 		printk(BIOS_INFO, "Skipping display init.\n");
 	}