aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/google/gale/chromeos.c
diff options
context:
space:
mode:
authorKan Yan <kyan@google.com>2016-07-14 18:05:20 -0700
committerMartin Roth <martinroth@google.com>2016-07-25 18:56:58 +0200
commit041bc763865414a099622fb4519c9458dfe923c9 (patch)
tree89ab900b9455d51484a42e0b6c16185cb859b25f /src/mainboard/google/gale/chromeos.c
parent8edfc1c51235e9ab306cb7b2f3936518f87ddf2a (diff)
google/gale: Fix board ID and GPIO config.
Fix the board ID handling. Recovery switch and WP status GPIO has been reassigned in board rev3. Configure related GPIOs based on Board ID. BUG=chrome-os-partner:55320 TEST=Verified GPIO assignment for Rev.1 board. BRANCH=None Change-Id: Id8e1ba1c039f8b5b503f0da038e5cfc84b72678f Signed-off-by: Martin Roth <martinroth@chromium.org> Original-Commit-Id: d295ab514e31d9ebd1b77e0af9b769e64cbf567e Original-Change-Id: I6d3d5df2e9017f7845edc3cd0b2c19ad7c58a97c Original-Signed-off-by: Kan Yan <kyan@google.com> Original-Reviewed-on: https://chromium-review.googlesource.com/361393 Original-Reviewed-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: https://review.coreboot.org/15809 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src/mainboard/google/gale/chromeos.c')
-rw-r--r--src/mainboard/google/gale/chromeos.c49
1 files changed, 38 insertions, 11 deletions
diff --git a/src/mainboard/google/gale/chromeos.c b/src/mainboard/google/gale/chromeos.c
index beeb2a5f18..06b3d8537b 100644
--- a/src/mainboard/google/gale/chromeos.c
+++ b/src/mainboard/google/gale/chromeos.c
@@ -25,13 +25,36 @@
#include <timer.h>
#include <vendorcode/google/chromeos/chromeos.h>
-#define DEV_SW 41
+#define DEV_SW 41
#define DEV_POL ACTIVE_LOW
-#define REC_SW 7
#define REC_POL ACTIVE_LOW
-#define WP_SW 6
-#define WP_POL ACTIVE_LOW
+#define WP_POL ACTIVE_LOW
+static int get_rec_sw_gpio_pin(void)
+{
+ uint8_t board_rev = board_id();
+ switch (board_rev) {
+ case BOARD_ID_GALE_EVT:
+ case BOARD_ID_GALE_EVT2:
+ return 7;
+ case BOARD_ID_GALE_EVT3:
+ default:
+ return 57;
+ }
+}
+
+static int get_wp_status_gpio_pin(void)
+{
+ uint8_t board_rev = board_id();
+ switch (board_rev) {
+ case BOARD_ID_GALE_EVT:
+ case BOARD_ID_GALE_EVT2:
+ return 6;
+ case BOARD_ID_GALE_EVT3:
+ default:
+ return 53;
+ }
+}
static int read_gpio(gpio_t gpio_num)
{
gpio_tlmm_config_set(gpio_num, GPIO_FUNC_DISABLE,
@@ -43,9 +66,11 @@ static int read_gpio(gpio_t gpio_num)
void fill_lb_gpios(struct lb_gpios *gpios)
{
struct lb_gpio chromeos_gpios[] = {
- {DEV_SW, ACTIVE_LOW, read_gpio(DEV_SW), "developer"},
- {REC_SW, ACTIVE_LOW, read_gpio(REC_SW), "recovery"},
- {WP_SW, ACTIVE_LOW, read_gpio(WP_SW), "write protect"},
+ {DEV_SW, DEV_POL, read_gpio(DEV_SW), "developer"},
+ {get_rec_sw_gpio_pin(), REC_POL,
+ read_gpio(get_rec_sw_gpio_pin()), "recovery"},
+ {get_wp_status_gpio_pin(), WP_POL,
+ read_gpio(get_wp_status_gpio_pin()), "write protect"},
{-1, ACTIVE_LOW, 1, "power"},
{-1, ACTIVE_LOW, 0, "lid"},
};
@@ -88,12 +113,14 @@ static enum switch_state get_switch_state(void)
{
struct stopwatch sw;
int sampled_value;
+ uint8_t rec_sw;
static enum switch_state saved_state = not_probed;
if (saved_state != not_probed)
return saved_state;
- sampled_value = read_gpio(REC_SW) ^ !REC_POL;
+ rec_sw = get_rec_sw_gpio_pin();
+ sampled_value = read_gpio(rec_sw) ^ !REC_POL;
if (!sampled_value) {
saved_state = no_req;
@@ -107,7 +134,7 @@ static enum switch_state get_switch_state(void)
stopwatch_init_msecs_expire(&sw, WIPEOUT_MODE_DELAY_MS);
do {
- sampled_value = read_gpio(REC_SW) ^ !REC_POL;
+ sampled_value = read_gpio(rec_sw) ^ !REC_POL;
if (!sampled_value)
break;
} while (!stopwatch_expired(&sw));
@@ -117,7 +144,7 @@ static enum switch_state get_switch_state(void)
printk(BIOS_INFO, "wipeout requested, checking recovery\n");
stopwatch_init_msecs_expire(&sw, RECOVERY_MODE_EXTRA_DELAY_MS);
do {
- sampled_value = read_gpio(REC_SW) ^ !REC_POL;
+ sampled_value = read_gpio(rec_sw) ^ !REC_POL;
if (!sampled_value)
break;
} while (!stopwatch_expired(&sw));
@@ -149,5 +176,5 @@ int get_wipeout_mode_switch(void)
int get_write_protect_state(void)
{
- return read_gpio(WP_SW) ^ !WP_POL;
+ return read_gpio(get_wp_status_gpio_pin()) ^ !WP_POL;
}