summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorYH Lin <yueherngl@google.com>2019-04-10 09:05:54 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-04-11 09:32:37 -0700
commite967ca090dbe414b2c5828b05f13d3554a978422 (patch)
tree04eb456192776457b6507e7c100b88ab4b9a3a0c /board
parent7299e370e6c2ad7c86c90d9882a69c85958f24c7 (diff)
downloadchrome-ec-e967ca090dbe414b2c5828b05f13d3554a978422.tar.gz
Flapjack: Read LCM_ID and put into SKU_ID
Read/return LCM_ID (from P0d onward) as part of SKU_ID while preserving the compatibility of older boards. BUG=b/129569858 TEST=LCM info should only be printed from P0d onward. BRANCH=none Change-Id: I053982f27fc7e6cc95c626b2d40bddff9ba37bfc Signed-off-by: YH Lin <yueherngl@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1553578 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/flapjack/board.c42
-rw-r--r--board/flapjack/board.h14
-rw-r--r--board/flapjack/gpio.inc3
3 files changed, 53 insertions, 6 deletions
diff --git a/board/flapjack/board.c b/board/flapjack/board.c
index 862a6c12a4..02d0538363 100644
--- a/board/flapjack/board.c
+++ b/board/flapjack/board.c
@@ -50,6 +50,12 @@
#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+static const struct mv_to_id panels[] = {
+ { PANEL_BOE_HIMAX8279D10P, 98 },
+ { PANEL_BOE_HIMAX8279D8P, 280 },
+};
+BUILD_ASSERT(ARRAY_SIZE(panels) < PANEL_COUNT);
+
uint16_t board_version;
uint8_t oem;
uint32_t sku;
@@ -76,8 +82,24 @@ static void board_setup_panel(void)
uint8_t dim;
int rv = 0;
- channel = sku & SKU_ID_PANEL_SIZE_MASK ? 0xfe : 0xfa;
- dim = sku & SKU_ID_PANEL_SIZE_MASK ? 0xc4 : 0xc8;
+ if (board_version >= 3) {
+ switch ((sku >> PANEL_ID_BIT_POSITION) & 0xf) {
+ case PANEL_BOE_HIMAX8279D8P:
+ channel = 0xfa;
+ dim = 0xc8;
+ break;
+ case PANEL_BOE_HIMAX8279D10P:
+ channel = 0xfe;
+ dim = 0xc4;
+ break;
+ default:
+ return;
+ }
+ } else {
+ /* TODO: to be removed once the boards are deprecated. */
+ channel = sku & SKU_ID_PANEL_SIZE_MASK ? 0xfe : 0xfa;
+ dim = sku & SKU_ID_PANEL_SIZE_MASK ? 0xc4 : 0xc8;
+ }
rv |= i2c_write8(I2C_PORT_CHARGER, RT946X_ADDR, MT6370_BACKLIGHT_BLEN,
channel);
@@ -89,6 +111,15 @@ static void board_setup_panel(void)
CPRINTS("Board setup panel failed\n");
}
+static enum panel_id board_get_panel_id(void)
+{
+ int id = board_read_id(ADC_LCM_ID, panels, ARRAY_SIZE(panels));
+ if (id == ADC_READ_ERROR)
+ id = PANEL_UNKNOWN;
+ CPRINTS("LCM ID: %d", id);
+ return id;
+}
+
static void cbi_init(void)
{
uint32_t val;
@@ -103,6 +134,11 @@ static void cbi_init(void)
if (cbi_get_sku_id(&val) == EC_SUCCESS)
sku = val;
+
+ if (board_version >= 3)
+ /* Embed LCM_ID in sku_id bit[19-16] */
+ sku |= ((board_get_panel_id() & 0xf) << PANEL_ID_BIT_POSITION);
+
CPRINTS("SKU: 0x%08x", sku);
}
DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_INIT_I2C + 1);
@@ -122,7 +158,7 @@ static void gauge_interrupt(enum gpio_signal signal)
/******************************************************************************/
/* ADC channels. Must be in the exactly same order as in enum adc_channel. */
const struct adc_t adc_channels[] = {
- [ADC_BOARD_ID] = {"BOARD_ID", 3300, 4096, 0, STM32_AIN(10)},
+ [ADC_LCM_ID] = {"LCM_ID", 3300, 4096, 0, STM32_AIN(10)},
[ADC_EC_SKU_ID] = {"EC_SKU_ID", 3300, 4096, 0, STM32_AIN(8)},
[ADC_BATT_ID] = {"BATT_ID", 3300, 4096, 0, STM32_AIN(7)},
[ADC_USBC_THERM] = {"USBC_THERM", 3300, 4096, 0, STM32_AIN(14)},
diff --git a/board/flapjack/board.h b/board/flapjack/board.h
index ebe887d3cb..efbfd83436 100644
--- a/board/flapjack/board.h
+++ b/board/flapjack/board.h
@@ -237,13 +237,25 @@ enum oem_id {
enum adc_channel {
/* Real ADC channels begin here */
- ADC_BOARD_ID = 0,
+ ADC_LCM_ID = 0,
ADC_EC_SKU_ID,
ADC_BATT_ID,
ADC_USBC_THERM,
ADC_CH_COUNT
};
+/* Panel ID bit position inside sku_id */
+#define PANEL_ID_BIT_POSITION 16
+
+/* Refer to coreboot/src/mainboard/google/kukui/display.h */
+enum panel_id {
+ PANEL_KUKUI_INNOLUX = 0,
+ PANEL_BOE_HIMAX8279D10P,
+ PANEL_BOE_HIMAX8279D8P,
+ PANEL_UNKNOWN,
+ PANEL_COUNT,
+};
+
/* power signal definitions */
enum power_signal {
AP_IN_S3_L,
diff --git a/board/flapjack/gpio.inc b/board/flapjack/gpio.inc
index 1a2ae7c72e..3ff868d09f 100644
--- a/board/flapjack/gpio.inc
+++ b/board/flapjack/gpio.inc
@@ -67,7 +67,7 @@ GPIO(I2C2_SDA, PIN(A, 12), GPIO_INPUT)
/* Analog pins */
GPIO(BATT_ID, PIN(A, 7), GPIO_ANALOG)
-GPIO(BOARD_ID, PIN(C, 0), GPIO_ANALOG)
+GPIO(LCM_ID, PIN(C, 0), GPIO_ANALOG)
GPIO(EC_SKU_ID, PIN(B, 0), GPIO_ANALOG)
GPIO(USBC_THERM, PIN(C, 4), GPIO_ANALOG)
@@ -79,7 +79,6 @@ GPIO(CCD_MODE_ODL, PIN(A, 1), GPIO_INPUT)
/* Other output pins */
GPIO(ENTERING_RW, PIN(C, 6), GPIO_ODR_HIGH) /* EC_ENTERING_RW_ODL */
GPIO(EC_INT_L, PIN(B, 12), GPIO_ODR_HIGH) /* EC_AP_INT_ODL */
-GPIO(EC_BOARD_ID_EN_L, PIN(C, 15), GPIO_ODR_HIGH) /* EC_BOARD_ID_EN_ODL */
GPIO(USB_C0_DP_POLARITY, PIN(C, 14), GPIO_OUT_LOW)
GPIO(USB_C0_HPD_OD, PIN(F, 1), GPIO_ODR_LOW)
GPIO(BOOTBLOCK_EN_L, PIN(C, 1), GPIO_ODR_HIGH)