summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorDiana Z <dzigterman@chromium.org>2020-01-08 10:09:09 -0700
committerCommit Bot <commit-bot@chromium.org>2020-01-11 02:20:42 +0000
commitf11df7732d4d4bfdc9b25441be5af3d5ba569cad (patch)
treec5e38c82c95b8e63d31316e1e405ca093ccba3ae /driver
parente762dafc04bbc25cd66830d880a27131e72ceff5 (diff)
downloadchrome-ec-f11df7732d4d4bfdc9b25441be5af3d5ba569cad.tar.gz
RAA489000: Add TCPC driver
The RAA489000 is both a charger and TCPC. This commit adds the driver for the TCPC portion. BRANCH=none BUG=b:147316570 TEST=builds Change-Id: I797a3bf9a6cd15a23b6188e695c6d1abd3ce3980 Signed-off-by: Diana Z <dzigterman@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1991846 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r--driver/build.mk1
-rw-r--r--driver/tcpm/raa489000.c57
-rw-r--r--driver/tcpm/raa489000.h39
3 files changed, 97 insertions, 0 deletions
diff --git a/driver/build.mk b/driver/build.mk
index 0f530dce78..1f754ec4ec 100644
--- a/driver/build.mk
+++ b/driver/build.mk
@@ -138,6 +138,7 @@ driver-$(CONFIG_USB_PD_TCPM_PS8751)+=tcpm/ps8xxx.o
driver-$(CONFIG_USB_PD_TCPM_PS8805)+=tcpm/ps8xxx.o
driver-$(CONFIG_USB_PD_TCPM_TUSB422)+=tcpm/tusb422.o
driver-$(CONFIG_USB_PD_TCPM_NCT38XX)+=tcpm/nct38xx.o
+driver-$(CONFIG_USB_PD_TCPM_RAA489000)+=tcpm/raa489000.o
# Type-C Retimer drivers
driver-$(CONFIG_USBC_RETIMER_INTEL_BB)+=retimer/bb_retimer.o
diff --git a/driver/tcpm/raa489000.c b/driver/tcpm/raa489000.c
new file mode 100644
index 0000000000..30f6b768df
--- /dev/null
+++ b/driver/tcpm/raa489000.c
@@ -0,0 +1,57 @@
+/* Copyright 2020 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.
+ *
+ * Renesas RAA489000 TCPC driver
+ */
+
+#include "i2c.h"
+#include "raa489000.h"
+#include "tcpci.h"
+#include "tcpm.h"
+
+int raa489000_tcpm_set_cc(int port, int pull)
+{
+ int rv;
+
+ rv = tcpci_tcpm_set_cc(port, pull);
+ if (rv)
+ return rv;
+
+ /* TCPM should set RDOE to 1 after setting Rp */
+ if (pull == TYPEC_CC_RP)
+ rv = tcpc_update16(port, RAA489000_TYPEC_SETTING1,
+ RAA489000_SETTING1_RDOE, MASK_SET);
+
+ return rv;
+}
+
+/* RAA489000 is a TCPCI compatible port controller */
+const struct tcpm_drv raa489000_tcpm_drv = {
+ .init = &tcpci_tcpm_init,
+ .release = &tcpci_tcpm_release,
+ .get_cc = &tcpci_tcpm_get_cc,
+#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
+ .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+#endif
+ .select_rp_value = &tcpci_tcpm_select_rp_value,
+ .set_cc = &raa489000_tcpm_set_cc,
+ .set_polarity = &tcpci_tcpm_set_polarity,
+ .set_vconn = &tcpci_tcpm_set_vconn,
+ .set_msg_header = &tcpci_tcpm_set_msg_header,
+ .set_rx_enable = &tcpci_tcpm_set_rx_enable,
+ .get_message_raw = &tcpci_tcpm_get_message_raw,
+ .transmit = &tcpci_tcpm_transmit,
+ .tcpc_alert = &tcpci_tcpc_alert,
+#ifdef CONFIG_USB_PD_DISCHARGE_TCPC
+ .tcpc_discharge_vbus = &tcpci_tcpc_discharge_vbus,
+#endif
+#ifdef CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE
+ .drp_toggle = &tcpci_tcpc_drp_toggle,
+#endif
+ .get_chip_info = &tcpci_get_chip_info,
+#ifdef CONFIG_USB_PD_TCPC_LOW_POWER
+ .enter_low_power_mode = &tcpci_enter_low_power_mode,
+#endif
+};
+
diff --git a/driver/tcpm/raa489000.h b/driver/tcpm/raa489000.h
new file mode 100644
index 0000000000..1f6f875acb
--- /dev/null
+++ b/driver/tcpm/raa489000.h
@@ -0,0 +1,39 @@
+/* Copyright 2020 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.
+ *
+ * TCPC driver for Renesas RAA489000 Buck-boost charger with TCPC
+ */
+
+#ifndef __CROS_EC_USB_PD_TCPM_RAA489000_H
+#define __CROS_EC_USB_PD_TCPM_RAA489000_H
+
+#define RAA489000_TCPC0_I2C_FLAGS 0x22
+#define RAA489000_TCPC1_I2C_FLAGS 0x23
+#define RAA489000_TCPC2_I2C_FLAGS 0x24
+#define RAA489000_TCPC3_I2C_FLAGS 0x25
+
+/* Vendor registers */
+#define RAA489000_TYPEC_SETTING1 0xC0
+
+/* Enables for reverse current protection */
+#define RAA489000_SETTING1_IP2_EN BIT(9)
+#define RAA489000_SETTING1_IP1_EN BIT(8)
+
+/* Switches from dead-battery Rd */
+#define RAA489000_SETTING1_RDOE BIT(7)
+
+/* CC comparator enables */
+#define RAA489000_SETTING1_CC2_CMP3_EN BIT(6)
+#define RAA489000_SETTING1_CC2_CMP2_EN BIT(5)
+#define RAA489000_SETTING1_CC2_CMP1_EN BIT(4)
+#define RAA489000_SETTING1_CC1_CMP3_EN BIT(3)
+#define RAA489000_SETTING1_CC1_CMP2_EN BIT(2)
+#define RAA489000_SETTING1_CC1_CMP1_EN BIT(1)
+
+/* CC debounce enable */
+#define RAA489000_SETTING1_CC_DB_EN BIT(0)
+
+extern const struct tcpm_drv raa489000_tcpm_drv;
+
+#endif