summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/kukui/base_detect_kukui.c (renamed from board/kukui/base_detect_krane.c)14
-rw-r--r--baseboard/kukui/baseboard.h14
-rw-r--r--baseboard/kukui/build.mk2
-rw-r--r--board/kodama/base_detect_kodama.c134
-rw-r--r--board/kodama/board.h1
-rw-r--r--board/kodama/build.mk2
-rw-r--r--board/kukui/board.h5
-rw-r--r--board/kukui/build.mk1
8 files changed, 32 insertions, 141 deletions
diff --git a/board/kukui/base_detect_krane.c b/baseboard/kukui/base_detect_kukui.c
index 68c8dc5ef8..f72988543f 100644
--- a/board/kukui/base_detect_krane.c
+++ b/baseboard/kukui/base_detect_kukui.c
@@ -31,8 +31,10 @@ enum kukui_pogo_device_type {
DEVICE_TYPE_ERROR = -2,
DEVICE_TYPE_UNKNOWN = -1,
DEVICE_TYPE_DETACHED = 0,
- DEVICE_TYPE_DOCK = 1,
- DEVICE_TYPE_KEYBOARD = 2,
+#ifdef VARIANT_KUKUI_POGO_DOCK
+ DEVICE_TYPE_DOCK,
+#endif
+ DEVICE_TYPE_KEYBOARD,
DEVICE_TYPE_COUNT,
};
@@ -40,7 +42,9 @@ struct {
int mv_low, mv_high;
} static const pogo_detect_table[] = {
[DEVICE_TYPE_DETACHED] = {2700, 3500}, /* 10K, NC, around 3.3V */
+#ifdef VARIANT_KUKUI_POGO_DOCK
[DEVICE_TYPE_DOCK] = {141, 173}, /* 10K, 0.5K ohm */
+#endif
[DEVICE_TYPE_KEYBOARD] = {270, 400}, /* 10K, 1K ohm */
};
BUILD_ASSERT(ARRAY_SIZE(pogo_detect_table) == DEVICE_TYPE_COUNT);
@@ -65,6 +69,7 @@ static enum kukui_pogo_device_type get_device_type(int mv)
static void enable_charge(int enable)
{
+#ifdef VARIANT_KUKUI_POGO_DOCK
if (enable) {
struct charge_port_info info = {
.voltage = 5000, .current = 1500};
@@ -79,6 +84,7 @@ static void enable_charge(int enable)
CHARGE_SUPPLIER_DEDICATED, CHARGE_PORT_POGO, NULL);
}
pd_send_host_event(PD_EVENT_POWER_CHANGE);
+#endif
}
static void enable_power_supply(int enable)
@@ -128,11 +134,13 @@ static void base_detect_deferred(void)
tablet_set_mode(1);
break;
+#ifdef VARIANT_KUKUI_POGO_DOCK
case DEVICE_TYPE_DOCK:
enable_power_supply(0);
enable_charge(1);
tablet_set_mode(1);
break;
+#endif
case DEVICE_TYPE_KEYBOARD:
enable_charge(0);
@@ -164,6 +172,7 @@ static void base_init(void)
}
DECLARE_HOOK(HOOK_INIT, base_init, HOOK_PRIO_INIT_ADC + 1);
+#ifdef VARIANT_KUKUI_POGO_DOCK
static void board_pogo_charge_init(void)
{
int i;
@@ -174,3 +183,4 @@ static void board_pogo_charge_init(void)
}
DECLARE_HOOK(HOOK_INIT, board_pogo_charge_init,
HOOK_PRIO_CHARGE_MANAGER_INIT + 1);
+#endif
diff --git a/baseboard/kukui/baseboard.h b/baseboard/kukui/baseboard.h
index 345eff86db..3bd6862426 100644
--- a/baseboard/kukui/baseboard.h
+++ b/baseboard/kukui/baseboard.h
@@ -58,6 +58,20 @@
#endif /* VARIANT_KUKUI_CHARGER */
/*
+ * Variant pogo defines, if pick, VARIANT_KUKUI_POGO_KEYBOARD is mandatory
+ * VARIANT_KUKUI_POGO_KEYBOARD
+ * VARIANT_KUKUI_POGO_DOCK
+ */
+#ifdef VARIANT_KUKUI_POGO_DOCK
+#ifndef VARIANT_KUKUI_POGO_KEYBOARD
+#error VARIANT_KUKUI_POGO_KEYBOARD is mandatory if use dock
+#endif /* !VARIANT_KUKUI_POGO_KEYBOARD */
+#undef CONFIG_DEDICATED_CHARGE_PORT_COUNT
+#define CONFIG_DEDICATED_CHARGE_PORT_COUNT 1
+#define DEDICATED_CHARGE_PORT 1
+#endif /* VARIANT_KUKUI_POGO_DOCK */
+
+/*
* Define this flag if board controls dp mux via gpio pins USB_C0_DP_OE_L and
* USB_C0_DP_POLARITY.
*
diff --git a/baseboard/kukui/build.mk b/baseboard/kukui/build.mk
index 465df10aa9..cd0b5a7353 100644
--- a/baseboard/kukui/build.mk
+++ b/baseboard/kukui/build.mk
@@ -16,4 +16,6 @@ baseboard-$(VARIANT_KUKUI_BATTERY_SMART)+=battery_smart.o
baseboard-$(VARIANT_KUKUI_CHARGER_MT6370)+=charger_mt6370.o
+baseboard-$(VARIANT_KUKUI_POGO_KEYBOARD)+=base_detect_kukui.o
+
$(out)/RO/baseboard/$(BASEBOARD)/emmc.o: $(out)/bootblock_data.h
diff --git a/board/kodama/base_detect_kodama.c b/board/kodama/base_detect_kodama.c
deleted file mode 100644
index d118c4c4cb..0000000000
--- a/board/kodama/base_detect_kodama.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* Copyright 2019 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "adc.h"
-#include "board.h"
-#include "charge_manager.h"
-#include "console.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "timer.h"
-#include "usb_pd.h"
-#include "util.h"
-
-#define CPRINTS(format, args...) cprints(CC_USB, format, ## args)
-
-/* Krane base detection code */
-
-/* Base detection and debouncing */
-#define BASE_DETECT_DEBOUNCE_US (20 * MSEC)
-
-/*
- * If the base status is unclear (i.e. not within expected ranges, read
- * the ADC value again every 500ms.
- */
-#define BASE_DETECT_RETRY_US (500 * MSEC)
-
-enum kukui_pogo_device_type {
- DEVICE_TYPE_ERROR = -2,
- DEVICE_TYPE_UNKNOWN = -1,
- DEVICE_TYPE_DETACHED = 0,
- DEVICE_TYPE_KEYBOARD = 1,
- DEVICE_TYPE_COUNT,
-};
-
-struct {
- int mv_low, mv_high;
-} static const pogo_detect_table[] = {
- [DEVICE_TYPE_DETACHED] = {2700, 3500}, /* 10K, NC, around 3.3V */
- [DEVICE_TYPE_KEYBOARD] = {270, 400}, /* 10K, 1K ohm */
-};
-BUILD_ASSERT(ARRAY_SIZE(pogo_detect_table) == DEVICE_TYPE_COUNT);
-
-static uint64_t base_detect_debounce_time;
-
-static enum kukui_pogo_device_type get_device_type(int mv)
-{
- int i;
-
- if (mv == ADC_READ_ERROR)
- return DEVICE_TYPE_ERROR;
-
- for (i = 0; i < DEVICE_TYPE_COUNT; i++) {
- if (pogo_detect_table[i].mv_low <= mv &&
- mv <= pogo_detect_table[i].mv_high)
- return i;
- }
-
- return DEVICE_TYPE_UNKNOWN;
-}
-
-static void enable_power_supply(int enable)
-{
- gpio_set_level(GPIO_EN_PP3300_POGO, enable);
-}
-
-static void base_detect_deferred(void);
-DECLARE_DEFERRED(base_detect_deferred);
-
-static void base_detect_deferred(void)
-{
- uint64_t time_now = get_time().val;
- int mv;
- int device_type;
-
- if (base_detect_debounce_time > time_now) {
- hook_call_deferred(&base_detect_deferred_data,
- base_detect_debounce_time - time_now);
- return;
- }
-
- /*
- * Disable interrupt first to prevent it triggered by value
- * changed from 1 to disabled state(=0).
- */
- gpio_disable_interrupt(GPIO_POGO_ADC_INT_L);
- gpio_set_flags(GPIO_POGO_ADC_INT_L, GPIO_ANALOG);
- mv = adc_read_channel(ADC_POGO_ADC_INT_L);
- /* restore the pin function */
- gpio_set_flags(GPIO_POGO_ADC_INT_L, GPIO_INT_BOTH);
- gpio_enable_interrupt(GPIO_POGO_ADC_INT_L);
-
- device_type = get_device_type(mv);
- CPRINTS("POGO: adc=%d, device_type=%d", mv, device_type);
-
- switch (device_type) {
- case DEVICE_TYPE_ERROR:
- case DEVICE_TYPE_UNKNOWN:
- hook_call_deferred(&base_detect_deferred_data,
- BASE_DETECT_RETRY_US);
- break;
-
- case DEVICE_TYPE_DETACHED:
- enable_power_supply(0);
- break;
-
- case DEVICE_TYPE_KEYBOARD:
- enable_power_supply(1);
- break;
-
- case DEVICE_TYPE_COUNT:
- /* should not happen */
- break;
- }
-}
-
-void pogo_adc_interrupt(enum gpio_signal signal)
-{
- uint64_t time_now = get_time().val;
-
- if (base_detect_debounce_time <= time_now) {
- hook_call_deferred(&base_detect_deferred_data,
- BASE_DETECT_DEBOUNCE_US);
- }
-
- base_detect_debounce_time = time_now + BASE_DETECT_DEBOUNCE_US;
-}
-
-static void base_init(void)
-{
- hook_call_deferred(&base_detect_deferred_data, 0);
-}
-DECLARE_HOOK(HOOK_INIT, base_init, HOOK_PRIO_INIT_ADC + 1);
diff --git a/board/kodama/board.h b/board/kodama/board.h
index 8ccb962edb..771bf5f81e 100644
--- a/board/kodama/board.h
+++ b/board/kodama/board.h
@@ -10,6 +10,7 @@
#define VARIANT_KUKUI_BATTERY_SMART
#define VARIANT_KUKUI_CHARGER_MT6370
+#define VARIANT_KUKUI_POGO_KEYBOARD
#ifndef SECTION_IS_RW
#define VARIANT_KUKUI_NO_SENSORS
diff --git a/board/kodama/build.mk b/board/kodama/build.mk
index 72d5a37433..0b3565fd84 100644
--- a/board/kodama/build.mk
+++ b/board/kodama/build.mk
@@ -12,4 +12,4 @@ CHIP_FAMILY:=stm32f0
CHIP_VARIANT:=stm32f09x
BASEBOARD:=kukui
-board-y=base_detect_kodama.o battery.o board.o led.o
+board-y=battery.o board.o led.o
diff --git a/board/kukui/board.h b/board/kukui/board.h
index b86b9d92bf..31125cf9e5 100644
--- a/board/kukui/board.h
+++ b/board/kukui/board.h
@@ -10,6 +10,8 @@
#ifdef BOARD_KRANE
#define VARIANT_KUKUI_BATTERY_MM8013
+#define VARIANT_KUKUI_POGO_KEYBOARD
+#define VARIANT_KUKUI_POGO_DOCK
#else
#define VARIANT_KUKUI_BATTERY_MAX17055
#endif
@@ -36,9 +38,6 @@
#ifdef BOARD_KRANE
#define CONFIG_CHARGER_MT6370_BACKLIGHT
-#undef CONFIG_DEDICATED_CHARGE_PORT_COUNT
-#define CONFIG_DEDICATED_CHARGE_PORT_COUNT 1
-#define DEDICATED_CHARGE_PORT 1
#endif /* BOARD_KRANE */
#ifdef BOARD_KUKUI
diff --git a/board/kukui/build.mk b/board/kukui/build.mk
index 337649bcb9..694879cee6 100644
--- a/board/kukui/build.mk
+++ b/board/kukui/build.mk
@@ -13,4 +13,3 @@ CHIP_VARIANT:=stm32f09x
BASEBOARD:=kukui
board-y=board.o led.o
-board-$(BOARD_KRANE)+=base_detect_krane.o