summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2019-10-23 20:02:29 +0800
committerCommit Bot <commit-bot@chromium.org>2019-12-16 08:06:07 +0000
commite25c81318a06506c79423900b9592a7caa36cfed (patch)
tree8ca5e83e6189513fb798b7ddb15836f60332efdc
parent7b61704fd1a09c5aae26f163e096d9695e479f21 (diff)
downloadchrome-ec-e25c81318a06506c79423900b9592a7caa36cfed.tar.gz
kodama/jacuzzi: enable i2c bitbang
- Enable bitbang driver - increase the console/hook stack size because accessing bitbang i2c bus requires more stack memory than before BUG=b:138161741,b:138415463 TEST=see CL:1765110 BRANCH=kukui Change-Id: I54aa0b5c37cd3fde497b552ea553e5542e594546 Signed-off-by: Ting Shen <phoenixshen@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1876290 Reviewed-by: Alexandru M Stan <amstan@chromium.org> Commit-Queue: Ting Shen <phoenixshen@chromium.org> Tested-by: Ting Shen <phoenixshen@chromium.org>
-rw-r--r--board/jacuzzi/board.c15
-rw-r--r--board/jacuzzi/board.h15
-rw-r--r--board/jacuzzi/ec.tasklist2
-rw-r--r--board/jacuzzi/gpio.inc2
-rw-r--r--board/kodama/board.c11
-rw-r--r--board/kodama/board.h12
-rw-r--r--board/kodama/ec.tasklist2
-rw-r--r--board/kodama/gpio.inc3
8 files changed, 55 insertions, 7 deletions
diff --git a/board/jacuzzi/board.c b/board/jacuzzi/board.c
index ec03ec7c5f..0238a19d9d 100644
--- a/board/jacuzzi/board.c
+++ b/board/jacuzzi/board.c
@@ -27,6 +27,7 @@
#include "hooks.h"
#include "host_command.h"
#include "i2c.h"
+#include "i2c_bitbang.h"
#include "it8801.h"
#include "keyboard_scan.h"
#include "lid_switch.h"
@@ -68,10 +69,19 @@ BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
/* I2C ports */
const struct i2c_port_t i2c_ports[] = {
{"typec", 0, 400, GPIO_I2C1_SCL, GPIO_I2C1_SDA},
+#ifdef BOARD_JACUZZI
{"other", 1, 100, GPIO_I2C2_SCL, GPIO_I2C2_SDA},
+#else /* Juniper */
+ {"other", 1, 400, GPIO_I2C2_SCL, GPIO_I2C2_SDA},
+#endif
};
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
+const struct i2c_port_t i2c_bitbang_ports[] = {
+ {"battery", 2, 100, GPIO_I2C3_SCL, GPIO_I2C3_SDA, .drv = &bitbang_drv},
+};
+const unsigned int i2c_bitbang_ports_used = ARRAY_SIZE(i2c_bitbang_ports);
+
#define BC12_I2C_ADDR PI3USB9201_I2C_ADDR_3
/* power signal list. Must match order of enum power_signal. */
@@ -285,3 +295,8 @@ int board_get_charger_i2c(void)
/* TODO(b:138415463): confirm the bus allocation for future builds */
return board_get_version() == 1 ? 2 : 1;
}
+
+int board_get_battery_i2c(void)
+{
+ return board_get_version() >= 1 ? 2 : 1;
+}
diff --git a/board/jacuzzi/board.h b/board/jacuzzi/board.h
index e9bf5b8a79..b2abf7bcb2 100644
--- a/board/jacuzzi/board.h
+++ b/board/jacuzzi/board.h
@@ -35,6 +35,12 @@
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 200
+#define CONFIG_I2C_BITBANG
+#define I2C_BITBANG_PORT_COUNT 1
+#undef CONFIG_I2C_NACK_RETRY_COUNT
+#define CONFIG_I2C_NACK_RETRY_COUNT 3
+#define CONFIG_SMBUS_PEC
+
#define CONFIG_USB_PD_TCPM_FUSB302
#define CONFIG_USB_PD_DISCHARGE_GPIO
#define CONFIG_USB_PD_TCPC_LOW_POWER
@@ -65,10 +71,14 @@
#define I2C_PORT_BC12 0
#define I2C_PORT_TCPC0 0
#define I2C_PORT_USB_MUX 0
-#define I2C_PORT_BATTERY 1
#define I2C_PORT_CHARGER board_get_charger_i2c()
#define I2C_PORT_IO_EXPANDER_IT8801 1
#define I2C_PORT_VIRTUAL_BATTERY I2C_PORT_BATTERY
+#ifdef BOARD_JACUZZI
+#define I2C_PORT_BATTERY 1
+#else /* Juniper */
+#define I2C_PORT_BATTERY 2
+#endif
/* Enable Accel over SPI */
#define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */
@@ -143,8 +153,9 @@ void board_reset_pd_mcu(void);
int board_get_version(void);
int board_is_sourcing_vbus(int port);
-/* returns the i2c port number of charger */
+/* returns the i2c port number of charger/battery */
int board_get_charger_i2c(void);
+int board_get_battery_i2c(void);
#endif /* !__ASSEMBLER__ */
diff --git a/board/jacuzzi/ec.tasklist b/board/jacuzzi/ec.tasklist
index 283af8595a..a1e20808cc 100644
--- a/board/jacuzzi/ec.tasklist
+++ b/board/jacuzzi/ec.tasklist
@@ -14,7 +14,7 @@
TASK_ALWAYS_RW(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(PDCMD, pd_command_task, NULL, 1024) \
TASK_ALWAYS(HOSTCMD, host_command_task, NULL, 1024) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
+ TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \
TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, 1024) \
diff --git a/board/jacuzzi/gpio.inc b/board/jacuzzi/gpio.inc
index fed96eda51..bb54bceab5 100644
--- a/board/jacuzzi/gpio.inc
+++ b/board/jacuzzi/gpio.inc
@@ -53,6 +53,8 @@ GPIO(I2C1_SCL, PIN(B, 8), GPIO_INPUT)
GPIO(I2C1_SDA, PIN(B, 9), GPIO_INPUT)
GPIO(I2C2_SCL, PIN(A, 11), GPIO_INPUT)
GPIO(I2C2_SDA, PIN(A, 12), GPIO_INPUT)
+GPIO(I2C3_SCL, PIN(A, 5), GPIO_ODR_HIGH)
+GPIO(I2C3_SDA, PIN(C, 4), GPIO_ODR_HIGH)
/* Analog pins */
GPIO(BOARD_ID, PIN(C, 0), GPIO_ANALOG)
diff --git a/board/kodama/board.c b/board/kodama/board.c
index deedea88fd..7a221ace3d 100644
--- a/board/kodama/board.c
+++ b/board/kodama/board.c
@@ -23,6 +23,7 @@
#include "hooks.h"
#include "host_command.h"
#include "i2c.h"
+#include "i2c_bitbang.h"
#include "lid_switch.h"
#include "power.h"
#include "power_button.h"
@@ -66,6 +67,11 @@ const struct i2c_port_t i2c_ports[] = {
};
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
+const struct i2c_port_t i2c_bitbang_ports[] = {
+ {"battery", 2, 100, GPIO_I2C3_SCL, GPIO_I2C3_SDA, .drv = &bitbang_drv},
+};
+const unsigned int i2c_bitbang_ports_used = ARRAY_SIZE(i2c_bitbang_ports);
+
/* power signal list. Must match order of enum power_signal. */
const struct power_signal_info power_signal_list[] = {
{GPIO_AP_IN_SLEEP_L, POWER_SIGNAL_ACTIVE_LOW, "AP_IN_S3_L"},
@@ -365,3 +371,8 @@ void board_fill_source_power_info(int port,
r->meas.current_lim = 1500;
r->max_power = r->meas.voltage_now * r->meas.current_max;
}
+
+int board_get_battery_i2c(void)
+{
+ return board_get_version() >= 2 ? 2 : 1;
+}
diff --git a/board/kodama/board.h b/board/kodama/board.h
index d6d7a329b1..cf71fe5dd2 100644
--- a/board/kodama/board.h
+++ b/board/kodama/board.h
@@ -28,6 +28,12 @@
#define CONFIG_BATTERY_HW_PRESENT_CUSTOM
+#define CONFIG_I2C_BITBANG
+#define I2C_BITBANG_PORT_COUNT 1
+#undef CONFIG_I2C_NACK_RETRY_COUNT
+#define CONFIG_I2C_NACK_RETRY_COUNT 3
+#define CONFIG_SMBUS_PEC
+
/* Battery */
#define BATTERY_DESIRED_CHARGING_CURRENT 2000 /* mA */
@@ -52,9 +58,9 @@
#define I2C_PORT_CHARGER 0
#define I2C_PORT_TCPC0 0
#define I2C_PORT_USB_MUX 0
-#define I2C_PORT_BATTERY 1
-#define I2C_PORT_VIRTUAL_BATTERY I2C_PORT_BATTERY
#define I2C_PORT_ACCEL 1
+#define I2C_PORT_BATTERY board_get_battery_i2c()
+#define I2C_PORT_VIRTUAL_BATTERY I2C_PORT_BATTERY
/* Define the host events which are allowed to wakeup AP in S3. */
#define CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK \
@@ -113,6 +119,8 @@ int board_get_version(void);
int board_is_sourcing_vbus(int port);
void pogo_adc_interrupt(enum gpio_signal signal);
int board_discharge_on_ac(int enable);
+/* returns the i2c port number of battery */
+int board_get_battery_i2c(void);
#endif /* !__ASSEMBLER__ */
diff --git a/board/kodama/ec.tasklist b/board/kodama/ec.tasklist
index bfa61707e1..df944a1b07 100644
--- a/board/kodama/ec.tasklist
+++ b/board/kodama/ec.tasklist
@@ -7,7 +7,7 @@
* See CONFIG_TASK_LIST in config.h for details.
*/
#define CONFIG_TASK_LIST \
- TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
+ TASK_ALWAYS(HOOKS, hook_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
diff --git a/board/kodama/gpio.inc b/board/kodama/gpio.inc
index 461d34d4d5..b54d6f5ed5 100644
--- a/board/kodama/gpio.inc
+++ b/board/kodama/gpio.inc
@@ -63,6 +63,8 @@ GPIO(I2C1_SCL, PIN(B, 8), GPIO_INPUT)
GPIO(I2C1_SDA, PIN(B, 9), GPIO_INPUT)
GPIO(I2C2_SCL, PIN(A, 11), GPIO_INPUT)
GPIO(I2C2_SDA, PIN(A, 12), GPIO_INPUT)
+GPIO(I2C3_SCL, PIN(B, 6), GPIO_ODR_HIGH)
+GPIO(I2C3_SDA, PIN(D, 2), GPIO_ODR_HIGH)
/* Analog pins */
GPIO(BOARD_ID, PIN(C, 0), GPIO_ANALOG)
@@ -83,7 +85,6 @@ GPIO(USB_C0_HPD_OD, PIN(F, 1), GPIO_ODR_LOW)
GPIO(BOOTBLOCK_EN_L, PIN(C, 1), GPIO_ODR_HIGH)
GPIO(BATT_CUTOFF_INDICATOR, PIN(A, 5), GPIO_OUT_LOW)
GPIO(EN_PP3300_POGO, PIN(A, 13), GPIO_OUT_LOW)
-GPIO(EN_POGO_CHARGE_L, PIN(B, 6), GPIO_OUT_HIGH)
GPIO(BC12_DET_EN, PIN(C, 4), GPIO_OUT_LOW)
UNIMPLEMENTED(EN_PP5000_USBC)