diff options
author | YH Lin <yueherngl@google.com> | 2019-04-10 09:05:54 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-11 09:32:37 -0700 |
commit | e967ca090dbe414b2c5828b05f13d3554a978422 (patch) | |
tree | 04eb456192776457b6507e7c100b88ab4b9a3a0c | |
parent | 7299e370e6c2ad7c86c90d9882a69c85958f24c7 (diff) | |
download | chrome-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>
-rw-r--r-- | board/flapjack/board.c | 42 | ||||
-rw-r--r-- | board/flapjack/board.h | 14 | ||||
-rw-r--r-- | board/flapjack/gpio.inc | 3 |
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) |