From e36ae821dca113e7e9e262ff2b6ff6a92eff4d7a Mon Sep 17 00:00:00 2001 From: Zick Wei Date: Tue, 3 Aug 2021 10:45:50 +0800 Subject: 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 Change-Id: I8bf0abc3df9e28e7a018ddeb4fb971d2ede46039 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3066828 Reviewed-by: Daisuke Nojiri --- board/redrix/board.c | 20 ++++++++++++++++++++ board/redrix/board.h | 10 ++++++++++ board/redrix/ec.tasklist | 1 + board/redrix/gpio.inc | 6 ++++++ 4 files changed, 37 insertions(+) (limited to 'board/redrix') 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 */ -- cgit v1.2.1