summaryrefslogtreecommitdiff
path: root/driver/bc12
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2020-05-07 16:40:35 +0800
committerCommit Bot <commit-bot@chromium.org>2020-05-07 13:57:33 +0000
commit0f0aff93d0d47654f47187321858e955fae9d4a7 (patch)
tree448b4a855097935f3a5b9db42eaa2c487344ddc6 /driver/bc12
parent5e0b69a31b5964644693952f52a6339f66c5e260 (diff)
downloadchrome-ec-0f0aff93d0d47654f47187321858e955fae9d4a7.tar.gz
move pi3usb9201.h to driver/bc12/
Currently pi3usb9281's header and implementation lives in different folder, header is in driver/usb_mux/, but implementation is in driver/bc12/. From the git log of these two files, this looks unintended. This CL moves header file into driver/bc12/ for consistency. Nothing else need to be changed since all references to this header does not hard-code its path. BUG=none TEST=make buildall BRANCH=none Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I4ca6046362b442dece0d277520bca149c743dcd7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2186859 Tested-by: Ting Shen <phoenixshen@chromium.org> Auto-Submit: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Eric Yilun Lin <yllin@chromium.org> Commit-Queue: Eric Yilun Lin <yllin@chromium.org>
Diffstat (limited to 'driver/bc12')
-rw-r--r--driver/bc12/pi3usb9281.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/driver/bc12/pi3usb9281.h b/driver/bc12/pi3usb9281.h
new file mode 100644
index 0000000000..69b671500e
--- /dev/null
+++ b/driver/bc12/pi3usb9281.h
@@ -0,0 +1,82 @@
+/* Copyright 2014 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.
+ *
+ * Pericom PI3USB9281 USB port switch.
+ */
+
+#ifndef __CROS_EC_PI3USB9281_H
+#define __CROS_EC_PI3USB9281_H
+
+#define PI3USB9281_REG_DEV_ID 0x01
+#define PI3USB9281_REG_CONTROL 0x02
+#define PI3USB9281_REG_INT 0x03
+#define PI3USB9281_REG_INT_MASK 0x05
+#define PI3USB9281_REG_DEV_TYPE 0x0a
+#define PI3USB9281_REG_CHG_STATUS 0x0e
+#define PI3USB9281_REG_MANUAL 0x13
+#define PI3USB9281_REG_RESET 0x1b
+#define PI3USB9281_REG_VBUS 0x1d
+
+#define PI3USB9281_DEV_ID 0x10
+#define PI3USB9281_DEV_ID_A 0x18
+
+#define PI3USB9281_CTRL_INT_DIS BIT(0)
+#define PI3USB9281_CTRL_AUTO BIT(2)
+#define PI3USB9281_CTRL_SWITCH_AUTO BIT(4)
+/* Bits 5 thru 7 are read X, write 0 */
+#define PI3USB9281_CTRL_MASK 0x1f
+/* Bits 1 and 3 are read 1, write 1 */
+#define PI3USB9281_CTRL_RSVD_1 0x0a
+
+#define PI3USB9281_PIN_MANUAL_VBUS (3 << 0)
+#define PI3USB9281_PIN_MANUAL_DP BIT(2)
+#define PI3USB9281_PIN_MANUAL_DM BIT(5)
+
+#define PI3USB9281_INT_ATTACH BIT(0)
+#define PI3USB9281_INT_DETACH BIT(1)
+#define PI3USB9281_INT_OVP BIT(5)
+#define PI3USB9281_INT_OCP BIT(6)
+#define PI3USB9281_INT_OVP_OC BIT(7)
+#define PI3USB9281_INT_ATTACH_DETACH (PI3USB9281_INT_ATTACH | \
+ PI3USB9281_INT_DETACH)
+
+#define PI3USB9281_TYPE_NONE 0
+#define PI3USB9281_TYPE_MHL BIT(0)
+#define PI3USB9281_TYPE_OTG BIT(1)
+#define PI3USB9281_TYPE_SDP BIT(2)
+#define PI3USB9281_TYPE_CAR BIT(4)
+#define PI3USB9281_TYPE_CDP BIT(5)
+#define PI3USB9281_TYPE_DCP BIT(6)
+
+#define PI3USB9281_CHG_NONE 0
+#define PI3USB9281_CHG_CAR_TYPE1 BIT(1)
+#define PI3USB9281_CHG_CAR_TYPE2 (3 << 0)
+#define PI3USB9281_CHG_APPLE_1A BIT(2)
+#define PI3USB9281_CHG_APPLE_2A BIT(3)
+#define PI3USB9281_CHG_APPLE_2_4A BIT(4)
+/* Check if charge status has any connection */
+#define PI3USB9281_CHG_STATUS_ANY(x) (((x) & 0x1f) > 1)
+
+/* Define configuration of one pi3usb9281 part */
+struct pi3usb9281_config {
+ /* i2c port that chip resides on */
+ int i2c_port;
+ /* GPIO for chip selection in muxed configuration */
+ enum gpio_signal mux_gpio;
+ /* Logic level of mux_gpio to select chip */
+ int mux_gpio_level;
+ /* Mutex to lock access to mux gpio or NULL if no mux exists */
+ struct mutex *mux_lock;
+};
+
+/* Configuration struct defined at board level */
+extern struct pi3usb9281_config pi3usb9281_chips[];
+
+/* Enable interrupts. */
+int pi3usb9281_enable_interrupts(int port);
+
+/* Get the device type */
+int pi3usb9281_get_device_type(int port);
+
+#endif /* __CROS_EC_PI3USB9281_H */