summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@google.com>2016-11-07 08:25:45 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-04-13 07:55:38 -0700
commit26c325d15e2fa47bbe26636939fb29779d02bc57 (patch)
treea76ee7456270bf482971e999fabefb7367f8ea08
parent0e5497db696aef756cdf14e9a1aa532a98caddd6 (diff)
downloadchrome-ec-26c325d15e2fa47bbe26636939fb29779d02bc57.tar.gz
hammer: Enable I2C passthrough
This interface will be used to update the trackpad firmware. BRANCH=none BUG=b:35587174 TEST=make BOARD=hammer -j; flash hammer; lsusb -v -v shows I2C interface Change-Id: Ia4533c758f80eb786bd6dbb9f35feb66eb631793 Reviewed-on: https://chromium-review.googlesource.com/474667 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Chun-ta Lin <itspeter@chromium.org>
-rw-r--r--board/hammer/board.c8
-rw-r--r--board/hammer/board.h10
2 files changed, 14 insertions, 4 deletions
diff --git a/board/hammer/board.c b/board/hammer/board.c
index 5bc8b86fcb..baf7b41f08 100644
--- a/board/hammer/board.c
+++ b/board/hammer/board.c
@@ -20,6 +20,7 @@
#include "usart_tx_dma.h"
#include "usart_rx_dma.h"
#include "usb_descriptor.h"
+#include "usb_i2c.h"
#include "util.h"
#include "gpio_list.h"
@@ -33,13 +34,15 @@ const void *const usb_strings[] = {
[USB_STR_PRODUCT] = USB_STRING_DESC("Hammer"),
[USB_STR_SERIALNO] = 0,
[USB_STR_VERSION] = USB_STRING_DESC(CROS_EC_VERSION32),
+ [USB_STR_I2C_NAME] = USB_STRING_DESC("I2C"),
[USB_STR_UPDATE_NAME] = USB_STRING_DESC("Firmware update"),
};
BUILD_ASSERT(ARRAY_SIZE(usb_strings) == USB_STR_COUNT);
/******************************************************************************
- * Support I2C master port for trackpad.
+ * Support I2C bridging over USB, this requires usb_i2c_board_enable and
+ * usb_i2c_board_disable to be defined to enable and disable the I2C bridge.
*/
/* I2C ports */
@@ -55,6 +58,9 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
+int usb_i2c_board_enable(void) { return EC_SUCCESS; }
+void usb_i2c_board_disable(void) {}
+
/******************************************************************************
* Support firmware upgrade over USB. We can update whichever section is not
* the current section.
diff --git a/board/hammer/board.h b/board/hammer/board.h
index a035ee2965..c8d6bfa005 100644
--- a/board/hammer/board.h
+++ b/board/hammer/board.h
@@ -101,14 +101,16 @@
#define USB_IFACE_UPDATE 0
#define USB_IFACE_HID_KEYBOARD 1
#define USB_IFACE_HID_TOUCHPAD 2
-#define USB_IFACE_COUNT 3
+#define USB_IFACE_I2C 3
+#define USB_IFACE_COUNT 4
/* USB endpoint indexes (use define rather than enum to expand them) */
#define USB_EP_CONTROL 0
#define USB_EP_UPDATE 1
#define USB_EP_HID_KEYBOARD 2
#define USB_EP_HID_TOUCHPAD 3
-#define USB_EP_COUNT 4
+#define USB_EP_I2C 4
+#define USB_EP_COUNT 5
/* Optional features */
#define CONFIG_BOARD_PRE_INIT
@@ -121,7 +123,8 @@
#define CONFIG_KEYBOARD_DEBUG
#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C, GPIO_F
-/* Enable I2C */
+/* Enable control of I2C over USB */
+#define CONFIG_USB_I2C
#define CONFIG_I2C
#define CONFIG_I2C_MASTER
#define I2C_PORT_MASTER 0
@@ -164,6 +167,7 @@ enum usb_strings {
USB_STR_PRODUCT,
USB_STR_SERIALNO,
USB_STR_VERSION,
+ USB_STR_I2C_NAME,
USB_STR_UPDATE_NAME,
USB_STR_COUNT
};