Skip to content

Commit 467afef

Browse files
Eric Yilun LinCommit Bot
Eric Yilun Lin
authored and
Commit Bot
committed
asurada: detect subboard type
There are two different subboard configurations on Asurada: 1. Type-C 2. HDMI and they can be distinguished by EC_X_GPIO3. BRANCH=master BUG=b:154565980 TEST=ensure Type-C subboard is detected. Change-Id: Ic7dfeaee8b0f6e84e1f2e598dc93deb773bee059 Signed-off-by: Eric Yilun Lin <[email protected]> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2167124 Reviewed-by: Ting Shen <[email protected]>
1 parent 8f44962 commit 467afef

File tree

3 files changed

+60
-3
lines changed

3 files changed

+60
-3
lines changed

board/asurada/board.c

+39
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
#include "timer.h"
2929
#include "uart.h"
3030

31+
#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
32+
#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
33+
34+
static void x_ec_interrupt(enum gpio_signal signal);
35+
3136
#include "gpio_list.h"
3237

3338
const struct charger_config_t chg_chips[] = {
@@ -67,6 +72,9 @@ const struct power_signal_info power_signal_list[] = {
6772
};
6873
BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT);
6974

75+
/* Detect subboard */
76+
static enum board_sub_board board_get_sub_board(void);
77+
7078
/* Initialize board. */
7179
static void board_init(void)
7280
{
@@ -126,7 +134,38 @@ const struct i2c_port_t i2c_ports[] = {
126134
};
127135
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
128136

137+
static void x_ec_interrupt(enum gpio_signal signal)
138+
{
139+
/* TODO: implement this */
140+
}
141+
129142
int board_get_version(void)
130143
{
131144
return 0;
132145
}
146+
147+
/* Sub-board */
148+
149+
static enum board_sub_board board_get_sub_board(void)
150+
{
151+
static enum board_sub_board sub = SUB_BOARD_NONE;
152+
153+
if (sub != SUB_BOARD_NONE)
154+
return sub;
155+
156+
/* HDMI board has external pull high. */
157+
if (gpio_get_level(GPIO_EC_X_GPIO3))
158+
sub = SUB_BOARD_HDMI;
159+
else
160+
sub = SUB_BOARD_TYPEC;
161+
162+
CPRINTS("Detect %s SUB", sub == SUB_BOARD_HDMI ? "HDMI" : "TYPEC");
163+
return sub;
164+
}
165+
166+
static void sub_board_init(void)
167+
{
168+
board_get_sub_board();
169+
}
170+
DECLARE_HOOK(HOOK_INIT, sub_board_init, HOOK_PRIO_INIT_I2C - 1);
171+

board/asurada/board.h

+16
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@
7272
#undef CONFIG_UART_TX_BUF_SIZE
7373
#define CONFIG_UART_TX_BUF_SIZE 4096
7474

75+
/* GPIO name remapping */
76+
#define GPIO_EN_HDMI_PWR GPIO_EC_X_GPIO1
77+
#define GPIO_USB_C1_FRS_EN GPIO_EC_X_GPIO1
78+
#define GPIO_USB_C1_PPC_INT_ODL GPIO_X_EC_GPIO2
79+
#define GPIO_PS185_EC_DP_HPD GPIO_X_EC_GPIO2
80+
#define GPIO_USB_C1_DP_IN_HPD GPIO_EC_X_GPIO3
81+
#define GPIO_PS185_PWRDN_ODL GPIO_EC_X_GPIO3
82+
7583
#ifndef __ASSEMBLER__
7684

7785
#include "gpio_signal.h"
@@ -106,6 +114,14 @@ enum power_signal {
106114
POWER_SIGNAL_COUNT,
107115
};
108116

117+
enum board_sub_board {
118+
SUB_BOARD_NONE = -1,
119+
SUB_BOARD_TYPEC,
120+
SUB_BOARD_HDMI,
121+
122+
SUB_BOARD_COUNT,
123+
};
124+
109125
int board_get_version(void);
110126

111127
#endif /* !__ASSEMBLER__ */

board/asurada/gpio.inc

+5-3
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ GPIO_INT(VOLUME_DOWN_L, PIN(D, 6), GPIO_INT_BOTH | GPIO_PULL_UP,
4545
button_interrupt) /* EC_VOLDN_BTN_ODL */
4646
GPIO_INT(VOLUME_UP_L, PIN(D, 5), GPIO_INT_BOTH | GPIO_PULL_UP,
4747
button_interrupt) /* EC_VOLUP_BTN_ODL */
48+
GPIO_INT(X_EC_GPIO2, PIN(B, 2), GPIO_ODR_HIGH, x_ec_interrupt)
4849

4950
/* Power Sequencing Signals */
5051
GPIO(EC_PMIC_EN_ODL, PIN(D, 0), GPIO_ODR_HIGH | GPIO_SEL_1P8V)
@@ -83,6 +84,10 @@ GPIO(I2C_E_SDA, PIN(E, 7), GPIO_INPUT) /* I2C_USB_C1_SDA */
8384

8485
/* Keyboard pins */
8586

87+
/* Subboards HDMI/TYPEC */
88+
GPIO(EC_X_GPIO1, PIN(H, 4), GPIO_OUT_HIGH)
89+
GPIO(EC_X_GPIO3, PIN(J, 1), GPIO_INPUT)
90+
8691
/* Alternate functions GPIO definitions */
8792
ALTERNATE(PIN_MASK(B, 0x18), 1, MODULE_I2C, 0) /* I2C A */
8893
ALTERNATE(PIN_MASK(C, 0x06), 1, MODULE_I2C, 0) /* I2C B */
@@ -134,7 +139,6 @@ UNIMPLEMENTED_GPIO(TEMP_SENSOR_CHARGER, PIN(I, 5))
134139
UNIMPLEMENTED_GPIO(CHARGER_PMON, PIN(I, 6))
135140
UNIMPLEMENTED_GPIO(TEMP_SENSOR_AP, PIN(I, 7))
136141
UNIMPLEMENTED_GPIO(EC_DPBRDG_HPD_ODL, PIN(J, 0))
137-
UNIMPLEMENTED_GPIO(EC_X_GPIO3, PIN(J, 1))
138142
UNIMPLEMENTED_GPIO(BASE_IMU_INT_L, PIN(J, 2))
139143
UNIMPLEMENTED_GPIO(LID_ACCEL_INT_L, PIN(J, 3))
140144
UNIMPLEMENTED_GPIO(USB_C1_BC12_INT_L, PIN(J, 4))
@@ -145,7 +149,6 @@ UNIMPLEMENTED_GPIO(EC_USB_C0_CC2, PIN(F, 5))
145149
UNIMPLEMENTED_GPIO(EC_USB_C1_CC1, PIN(H, 1))
146150
UNIMPLEMENTED_GPIO(EC_USB_C1_CC2, PIN(H, 2))
147151
UNIMPLEMENTED_GPIO(USB_C0_FRS_EN, PIN(H, 3))
148-
UNIMPLEMENTED_GPIO(EC_X_GPIO1, PIN(H, 4))
149152
UNIMPLEMENTED_GPIO(EN_EC_ID_DOL, PIN(H, 5))
150153
UNIMPLEMENTED_GPIO(PG_MT6315_GPU_ODL, PIN(H, 6))
151154
UNIMPLEMENTED_GPIO(EC_GPG2, PIN(G, 2))
@@ -158,7 +161,6 @@ UNIMPLEMENTED_GPIO(EN_PP3000_SD_U, PIN(G, 1))
158161
UNIMPLEMENTED_GPIO(UART1_TX, PIN(B, 1)) /* UART_EC_TX_DEBUG_RX */
159162
UNIMPLEMENTED_GPIO(EN_PP5000_USB_A0_VBUS, PIN(B, 7))
160163
UNIMPLEMENTED_GPIO(CCD_MODE_ODL, PIN(C, 4))
161-
UNIMPLEMENTED_GPIO(X_EC_GPIO2, PIN(B, 2))
162164
UNIMPLEMENTED_GPIO(EC_BL_EN_OD, PIN(B, 5))
163165
UNIMPLEMENTED_GPIO(CLK_EC_RTC_32K, PIN(J, 6))
164166

0 commit comments

Comments
 (0)