ryu: normalize board id
Instead of relying on the encoding of gpio_get_in_tristate_values() normalize the ids. BUG=chrome-os-partner:31602 BRANCH=None TEST=Built and noted correct output w/ coresponding correct device tree selected in depthcharge. Change-Id: I6fc712aceb56d701725759503b9cfa1061ed25d7 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 1037d473f35613bf39a4b27a9c1ade718b852c0d Original-Change-Id: I7d5449bc14e776fd9faa86af0f80690c3d9ae92d Original-Signed-off-by: Aaron Durbin <adurbin@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/214840 Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: http://review.coreboot.org/9004 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
20772a8478
commit
2223c4f3ed
|
@ -22,17 +22,72 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <boardid.h>
|
#include <boardid.h>
|
||||||
|
#include "gpio.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* +------------------+---------+
|
||||||
|
* | BD_ID_STRAP[1:0] | PHASE |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | 00 | PROTO0 |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | 01 | PROTO1 |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | 0Z | EVT |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | 10 | DVT |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | 11 | PVT |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | 1Z | MP |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | Z0 | |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | Z1 | |
|
||||||
|
* +------------------+---------+
|
||||||
|
* | ZZ | |
|
||||||
|
* +------------------+---------+
|
||||||
|
*/
|
||||||
|
struct id_to_str {
|
||||||
|
const char *str;
|
||||||
|
int tri_state_value;
|
||||||
|
int normalized_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct id_to_str bdid_map[] = {
|
||||||
|
{ "PROTO 0", 0x00, BOARD_ID_PROTO_0 },
|
||||||
|
{ "PROTO 1", 0x01, BOARD_ID_PROTO_1 },
|
||||||
|
{ "EVT", 0x02, BOARD_ID_EVT },
|
||||||
|
{ "DVT", 0x04, BOARD_ID_DVT },
|
||||||
|
{ "PVT", 0x05, BOARD_ID_PVT },
|
||||||
|
{ "MP", 0x06, BOARD_ID_MP },
|
||||||
|
{ "Z0", 0x08, -1 },
|
||||||
|
{ "Z1", 0x09, -1 },
|
||||||
|
{ "ZZ", 0x0a, -1 },
|
||||||
|
};
|
||||||
|
|
||||||
uint8_t board_id(void)
|
uint8_t board_id(void)
|
||||||
{
|
{
|
||||||
static int id = -1;
|
static int id = -1;
|
||||||
|
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
gpio_t gpio[] = {GPIO(Q3), GPIO(Q4)};
|
const char *idstr = "Unknown";
|
||||||
|
int i;
|
||||||
|
int tristate_id;
|
||||||
|
gpio_t gpio[] = { BD_ID0, BD_ID1 };
|
||||||
|
|
||||||
id = gpio_get_in_tristate_values(gpio, ARRAY_SIZE(gpio), 0);
|
tristate_id = gpio_get_in_tristate_values(gpio,
|
||||||
|
ARRAY_SIZE(gpio), 0);
|
||||||
|
|
||||||
printk(BIOS_SPEW, "Board TRISTATE ID: %#x.\n", id);
|
for (i = 0; i < ARRAY_SIZE(bdid_map); i++) {
|
||||||
|
if (tristate_id != bdid_map[i].tri_state_value)
|
||||||
|
continue;
|
||||||
|
idstr = bdid_map[i].str;
|
||||||
|
id = bdid_map[i].normalized_id;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
printk(BIOS_SPEW, "Board ID: '%s' %d (%#x)\n", idstr, id,
|
||||||
|
tristate_id);
|
||||||
}
|
}
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,21 @@
|
||||||
|
|
||||||
#include <soc/nvidia/tegra132/gpio.h>
|
#include <soc/nvidia/tegra132/gpio.h>
|
||||||
|
|
||||||
/* LTE modem related GPIOs */
|
/* Board ID definitions. */
|
||||||
enum {
|
enum {
|
||||||
|
BOARD_ID_PROTO_0 = 0,
|
||||||
|
BOARD_ID_PROTO_1 = 1,
|
||||||
|
BOARD_ID_EVT = 2,
|
||||||
|
BOARD_ID_DVT = 3,
|
||||||
|
BOARD_ID_PVT = 4,
|
||||||
|
BOARD_ID_MP = 5,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/* Board ID related GPIOS. */
|
||||||
|
BD_ID0 = GPIO(Q3),
|
||||||
|
BD_ID1 = GPIO(Q4),
|
||||||
|
/* LTE modem related GPIOs */
|
||||||
MODEM_RESET = GPIO(S3),
|
MODEM_RESET = GPIO(S3),
|
||||||
MODEM_PWR_ON = GPIO(S4),
|
MODEM_PWR_ON = GPIO(S4),
|
||||||
MDM_DET = GPIO(V1),
|
MDM_DET = GPIO(V1),
|
||||||
|
|
Loading…
Reference in New Issue