summaryrefslogtreecommitdiff
path: root/chip
diff options
context:
space:
mode:
authorRuibin Chang <Ruibin.Chang@ite.com.tw>2021-07-01 16:56:03 +0800
committerCommit Bot <commit-bot@chromium.org>2021-07-09 03:45:49 +0000
commit4cf446bf5f122050f00376af66b9f5edcab26ba6 (patch)
tree1ec37f00932eea32cac7bb4d0e53cc0a1a62d788 /chip
parentde941c3ac9c049fea4fa199a95b39d0df20ce6c0 (diff)
downloadchrome-ec-4cf446bf5f122050f00376af66b9f5edcab26ba6.tar.gz
driver/tcpm/ite_pd_intc: separate pd interrupt to ite_pd_intc
Separate pd interrupt functions to ite_pd_intc for easier maintenance on cros_ec and zephyr. And enable PD interrupt functions for zephyr. BRANCH=none BUG=none TEST=1.can zmake hayato and make asurada 2.PD port functions work on board hayato Signed-off-by: Ruibin Chang <Ruibin.Chang@ite.com.tw> Change-Id: I67082bb442da7dfb669e23d8315d81f4abe7ba76 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2999358 Reviewed-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'chip')
-rw-r--r--chip/it83xx/intc.c79
1 files changed, 1 insertions, 78 deletions
diff --git a/chip/it83xx/intc.c b/chip/it83xx/intc.c
index dba528ed9c..170e8516b2 100644
--- a/chip/it83xx/intc.c
+++ b/chip/it83xx/intc.c
@@ -6,90 +6,13 @@
#include "common.h"
#include "intc.h"
#include "it83xx_pd.h"
+#include "ite_pd_intc.h"
#include "kmsc_chip.h"
#include "registers.h"
#include "task.h"
#include "tcpm/tcpm.h"
#include "usb_pd.h"
-#if defined(CONFIG_USB_PD_TCPM_ITE_ON_CHIP)
-static void chip_pd_irq(enum usbpd_port port)
-{
- task_clear_pending_irq(usbpd_ctrl_regs[port].irq);
-
- /* check status */
- if (IS_ENABLED(IT83XX_INTC_FAST_SWAP_SUPPORT) &&
- IS_ENABLED(CONFIG_USB_PD_FRS_TCPC) &&
- IS_ENABLED(CONFIG_USB_PD_REV30)) {
- /*
- * FRS detection must handle first, because we need to short
- * the interrupt -> board_frs_handler latency-critical time.
- */
- if (USBPD_IS_FAST_SWAP_DETECT(port)) {
- /* clear detect FRS signal (cc to GND) status */
- USBPD_CLEAR_FRS_DETECT_STATUS(port);
- if (board_frs_handler)
- board_frs_handler(port);
- /* inform TCPMv2 to change state */
- pd_got_frs_signal(port);
- }
- }
-
- if (USBPD_IS_HARD_RESET_DETECT(port)) {
- /* clear interrupt */
- IT83XX_USBPD_ISR(port) = USBPD_REG_MASK_HARD_RESET_DETECT;
- USBPD_SW_RESET(port);
- task_set_event(PD_PORT_TO_TASK_ID(port),
- PD_EVENT_RX_HARD_RESET);
- }
-
- if (USBPD_IS_RX_DONE(port)) {
- tcpm_enqueue_message(port);
- /* clear RX done interrupt */
- IT83XX_USBPD_ISR(port) = USBPD_REG_MASK_MSG_RX_DONE;
- }
-
- if (USBPD_IS_TX_DONE(port)) {
-#ifdef CONFIG_USB_PD_TCPM_DRIVER_IT8XXX2
- it8xxx2_clear_tx_error_status(port);
- /* check TX status, clear by TX_DONE status too */
- if (USBPD_IS_TX_ERR(port))
- it8xxx2_get_tx_error_status(port);
-#endif
- /* clear TX done interrupt */
- IT83XX_USBPD_ISR(port) = USBPD_REG_MASK_MSG_TX_DONE;
- task_set_event(PD_PORT_TO_TASK_ID(port),
- TASK_EVENT_PHY_TX_DONE);
- }
-
- if (IS_ENABLED(IT83XX_INTC_PLUG_IN_OUT_SUPPORT)) {
- if (USBPD_IS_PLUG_IN_OUT_DETECT(port)) {
- if (USBPD_IS_PLUG_IN(port))
- /*
- * When tcpc detect type-c plug in:
- * 1)If we are sink, disable detect interrupt,
- * messages on cc line won't trigger interrupt.
- * 2)If we are source, then set plug out
- * detection.
- */
- switch_plug_out_type(port);
- else
- /*
- * When tcpc detect type-c plug out:
- * switch to detect plug in.
- */
- IT83XX_USBPD_TCDCR(port) &=
- ~USBPD_REG_PLUG_OUT_SELECT;
-
- /* clear type-c device plug in/out detect interrupt */
- IT83XX_USBPD_TCDCR(port) |=
- USBPD_REG_PLUG_IN_OUT_DETECT_STAT;
- task_set_event(PD_PORT_TO_TASK_ID(port), PD_EVENT_CC);
- }
- }
-}
-#endif
-
int __ram_code intc_get_ec_int(void)
{
extern volatile int ec_int;