[coreboot-gerrit] Patch set updated for coreboot: gru: kevin: define GPIOs used on both platforms

Martin Roth (martinroth@google.com) gerrit at coreboot.org
Fri Jun 3 18:20:51 CEST 2016


Martin Roth (martinroth at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15029

-gerrit

commit 7697a97d2fa5bfff7f1f4ed43bc4ff74c22a90c9
Author: Vadim Bendebury <vbendeb at chromium.org>
Date:   Sun May 22 15:53:37 2016 -0700

    gru: kevin: define GPIOs used on both platforms
    
    The same GPIOs are used on both platforms, definitions are added an a
    new .h to make it easier to re-use them across the code.
    
    BRANCH=none
    BUG=chrome-os-partner:51537
    TEST=panel backlight still enabled on Gru as before. The rest of the
         GPIOs are used in the upcoming patches.
    
    Change-Id: If06f4b33720ab4bf098d23fb91322bba23fe6e90
    Signed-off-by: Martin Roth <martinroth at chromium.org>
    Original-Commit-Id: c587880
    Original-Change-Id: I1a6c5b5beb82ffcc5fea397e8e9ec2f183f4a7e0
    Original-Signed-off-by: Vadim Bendebury <vbendeb at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/346219
    Original-Tested-by: Shunqian Zheng <zhengsq at rock-chips.com>
---
 src/mainboard/google/gru/board.h     | 30 +++++++++++++++++++
 src/mainboard/google/gru/mainboard.c | 56 ++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+)

diff --git a/src/mainboard/google/gru/board.h b/src/mainboard/google/gru/board.h
new file mode 100644
index 0000000..6d80cdf
--- /dev/null
+++ b/src/mainboard/google/gru/board.h
@@ -0,0 +1,30 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2016 Rockchip Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __COREBOOT_SRC_MAINBOARD_GOOGLE_GRU_BOARD_H
+#define __COREBOOT_SRC_MAINBOARD_GOOGLE_GRU_BOARD_H
+
+#include <gpio.h>
+
+#define GPIO_BACKLIGHT	GPIO(1, C, 1)
+#define GPIO_EC_IN_RW	GPIO(3, B, 0)
+#define GPIO_EC_IRQ	GPIO(0, A, 1)
+#define GPIO_RESET	GPIO(0, B, 3)
+#define GPIO_WP		GPIO(1, C, 2)
+
+void setup_chromeos_gpios(void);
+
+#endif  /* ! __COREBOOT_SRC_MAINBOARD_GOOGLE_GRU_BOARD_H */
diff --git a/src/mainboard/google/gru/mainboard.c b/src/mainboard/google/gru/mainboard.c
index 6824cbf..1e0f1a8 100644
--- a/src/mainboard/google/gru/mainboard.c
+++ b/src/mainboard/google/gru/mainboard.c
@@ -21,6 +21,8 @@
 #include <soc/emmc.h>
 #include <soc/grf.h>
 
+#include "board.h"
+
 static void configure_emmc(void)
 {
 	/* Host controller does not support programmable clock generator.
@@ -86,10 +88,64 @@ static void configure_sdmmc(void)
 	write32(&rk3399_grf->iomux_sdmmc, IOMUX_SDMMC);
 }
 
+static void configure_display(void)
+{
+	/* set pinmux for edp HPD*/
+	gpio_input_pulldown(GPIO(4, C, 7));
+	write32(&rk3399_grf->iomux_edp_hotplug, IOMUX_EDP_HOTPLUG);
+
+	gpio_output(GPIO(4, D, 3), 1); /* CPU3_EDP_VDDEN for P3.3V_DISP */
+}
+
 static void mainboard_init(device_t dev)
 {
 	configure_sdmmc();
 	configure_emmc();
+	configure_display();
+}
+
+static void enable_backlight_booster(void)
+{
+	const struct {
+		uint8_t reg;
+		uint8_t value;
+	} i2c_writes[] = {
+		{1, 0x84},
+		{1, 0x85},
+		{0, 0x26}
+	};
+	int i;
+	const int booster_i2c_port = 0;
+	uint8_t i2c_buf[2];
+	struct i2c_seg i2c_command = { .read = 0, .chip = 0x2c,
+				       .buf = i2c_buf, .len = sizeof(i2c_buf)
+	};
+
+	/*
+	 * This function is called on Gru right after BL_EN is asserted. It
+	 * takes time for the switcher chip to come online, let's wait a bit
+	 * to let the voltage settle, so that the chip can be accessed.
+	 */
+	udelay(1000);
+
+	/* Select pinmux for i2c0, which is the display backlight booster. */
+	write32(&rk3399_pmugrf->iomux_i2c0_sda, IOMUX_I2C0_SDA);
+	write32(&rk3399_pmugrf->iomux_i2c0_scl, IOMUX_I2C0_SCL);
+	i2c_init(0, 100*KHz);
+
+	for (i = 0; i < ARRAY_SIZE(i2c_writes); i++) {
+		i2c_buf[0] = i2c_writes[i].reg;
+		i2c_buf[1] = i2c_writes[i].value;
+		i2c_transfer(booster_i2c_port, &i2c_command, 1);
+	}
+}
+
+void mainboard_power_on_backlight(void)
+{
+	gpio_output(GPIO(1, C, 1), 1);  /* BL_EN */
+
+	if (IS_ENABLED(CONFIG_BOARD_GOOGLE_GRU))
+		enable_backlight_booster();
 }
 
 static void mainboard_enable(device_t dev)



More information about the coreboot-gerrit mailing list