[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