summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZick Wei <zick.wei@quanta.corp-partner.google.com>2021-08-03 10:45:50 +0800
committerCommit Bot <commit-bot@chromium.org>2021-08-05 02:50:11 +0000
commite36ae821dca113e7e9e262ff2b6ff6a92eff4d7a (patch)
treeb725af9fc9abae48ac9147356e8b385677531e09
parent4053f907a135b00adbe824f4b944e5a8aa84306f (diff)
downloadchrome-ec-e36ae821dca113e7e9e262ff2b6ff6a92eff4d7a.tar.gz
redrix: add PCHG support
This patch add PCHG:ctn730 support on redrix. BUG=none BRANCH=none TEST=verify PCHG work as intended. Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com> Change-Id: I8bf0abc3df9e28e7a018ddeb4fb971d2ede46039 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3066828 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r--board/redrix/board.c20
-rw-r--r--board/redrix/board.h10
-rw-r--r--board/redrix/ec.tasklist1
-rw-r--r--board/redrix/gpio.inc6
4 files changed, 37 insertions, 0 deletions
diff --git a/board/redrix/board.c b/board/redrix/board.c
index dfeb4f8a65..3d213debb7 100644
--- a/board/redrix/board.c
+++ b/board/redrix/board.c
@@ -18,6 +18,7 @@
#include "fw_config.h"
#include "hooks.h"
#include "lid_switch.h"
+#include "peripheral_charger.h"
#include "power_button.h"
#include "power.h"
#include "registers.h"
@@ -32,6 +33,25 @@
#define CPRINTF(format, args...) cprintf(CC_CHARGER, format, ## args)
#define CPRINTS(format, args...) cprints(CC_CHARGER, format, ## args)
+/* PCHG control */
+#ifdef SECTION_IS_RW
+extern struct pchg_drv ctn730_drv;
+
+struct pchg pchgs[] = {
+ [0] = {
+ .cfg = &(const struct pchg_config) {
+ .drv = &ctn730_drv,
+ .i2c_port = I2C_PORT_WLC,
+ .irq_pin = GPIO_PEN_INT_ODL,
+ .full_percent = 96,
+ .block_size = 128,
+ },
+ .events = QUEUE_NULL(PCHG_EVENT_QUEUE_SIZE, enum pchg_event),
+ },
+};
+const int pchg_count = ARRAY_SIZE(pchgs);
+#endif
+
/******************************************************************************/
/* USB-A charging control */
diff --git a/board/redrix/board.h b/board/redrix/board.h
index 73b0e29a85..927a233c08 100644
--- a/board/redrix/board.h
+++ b/board/redrix/board.h
@@ -57,6 +57,13 @@
#define CONFIG_CMD_ACCELS
#define CONFIG_CMD_ACCEL_INFO
+/* WLC pins */
+#ifdef SECTION_IS_RW
+#define CONFIG_PERIPHERAL_CHARGER
+#define CONFIG_DEVICE_EVENT
+#define CONFIG_CTN730
+#endif
+
/* USB Type A Features */
#define USB_PORT_COUNT 1
#define CONFIG_USB_PORT_POWER_DUMB
@@ -123,6 +130,8 @@
#define GPIO_ID_1_EC_KB_BL_EN GPIO_EC_BATT_PRES_ODL
+#define GPIO_WLC_NRST_CONN GPIO_PEN_RST_L
+
/* System has back-lit keyboard */
#define CONFIG_PWM_KBLIGHT
@@ -145,6 +154,7 @@
#define I2C_PORT_BATTERY NPCX_I2C_PORT5_0
#define I2C_PORT_CHARGER NPCX_I2C_PORT7_0
#define I2C_PORT_EEPROM NPCX_I2C_PORT7_0
+#define I2C_PORT_WLC NPCX_I2C_PORT7_0
#define I2C_ADDR_EEPROM_FLAGS 0x50
diff --git a/board/redrix/ec.tasklist b/board/redrix/ec.tasklist
index e499a0e390..527007d689 100644
--- a/board/redrix/ec.tasklist
+++ b/board/redrix/ec.tasklist
@@ -13,6 +13,7 @@
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(LED, led_task, NULL, TASK_STACK_SIZE) \
+ TASK_ALWAYS_RW(PCHG, pchg_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 0, TASK_STACK_SIZE) \
diff --git a/board/redrix/gpio.inc b/board/redrix/gpio.inc
index c8a9f2e3d2..21f8b51ee1 100644
--- a/board/redrix/gpio.inc
+++ b/board/redrix/gpio.inc
@@ -33,6 +33,11 @@ GPIO_INT(USB_C1_BC12_INT_ODL, PIN(8, 3), GPIO_INT_FALLING, bc12_inter
GPIO_INT(USB_C1_PPC_INT_ODL, PIN(7, 0), GPIO_INT_FALLING, ppc_interrupt)
GPIO_INT(USB_C1_RT_INT_ODL, PIN(4, 1), GPIO_INT_FALLING, retimer_interrupt)
+/* WLC interrupt. GPIO_PULL_DOWN ensures no IRQ when WLC chip is off. */
+#ifdef SECTION_IS_RW
+GPIO_INT(PEN_INT_ODL, PIN(F, 5), GPIO_INT_RISING | GPIO_PULL_DOWN, pchg_irq)
+#endif
+
/* USED GPIOs: */
GPIO(CCD_MODE_ODL, PIN(E, 5), GPIO_INPUT)
GPIO(CHARGER_VAP_OTG_EN, PIN(9, 6), GPIO_OUT_LOW)
@@ -76,6 +81,7 @@ GPIO(SYS_RST_ODL, PIN(C, 5), GPIO_ODR_HIGH)
GPIO(USB_C0_TCPC_RST_ODL, PIN(A, 7), GPIO_ODR_LOW)
GPIO(USB_C1_TCPC_RST_ODL, PIN(A, 0), GPIO_ODR_LOW)
GPIO(VCCST_PWRGD_OD, PIN(A, 4), GPIO_ODR_LOW)
+GPIO(PEN_RST_L, PIN(0, 2), GPIO_ODR_HIGH)
/* LED */
GPIO(C0_CHARGE_LED_AMBER_L, PIN(C, 4), GPIO_OUT_HIGH) /* Amber C0 port */