summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Staaf <robotboy@chromium.org>2014-11-11 12:05:08 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-13 03:14:26 +0000
commit079742b1ffb352cb0149d4fea232747e83dd6209 (patch)
treee0079651e3b04a07869d784547ec31eab22a628f
parent4340685cf9ab9335256d63a8a551faa85af4f892 (diff)
downloadchrome-ec-079742b1ffb352cb0149d4fea232747e83dd6209.tar.gz
USB: Enable finer grain control over init process
Previously enabling USB would automatically (using an init hook) initialize the USB peripheral. This would take over the GPIO lines assigned to the USB module. This is not OK on Ryu for Case Closed Debug because it interferes with the AP's access to the USB 2.0 lines even when not in Case Close Debug mode. This change adds a configuration option to inhibit this default initialization of the USB peripheral. It also renames the existing CONFIG_USB_INHIBIT to CONFIG_USB_INHIBIT_CONNECT now that there are two possible inhibitions. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=make buildall -j Enable console on ryu_p2 and discovery-stm32f072 board Verify that it works on both Change-Id: I6734357131b4356e3d4164349d6c74deac196ce5 Reviewed-on: https://chromium-review.googlesource.com/229138 Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Commit-Queue: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org>
-rw-r--r--board/dingdong/board.h2
-rw-r--r--board/hoho/board.h2
-rw-r--r--chip/stm32/usb.c5
-rw-r--r--include/config.h5
-rw-r--r--include/usb_api.h7
5 files changed, 14 insertions, 7 deletions
diff --git a/board/dingdong/board.h b/board/dingdong/board.h
index de68de93e8..3007f8b67f 100644
--- a/board/dingdong/board.h
+++ b/board/dingdong/board.h
@@ -21,7 +21,7 @@
#define CONFIG_HW_CRC
#define CONFIG_USB
#define CONFIG_USB_BOS
-#define CONFIG_USB_INHIBIT
+#define CONFIG_USB_INHIBIT_CONNECT
#define CONFIG_USB_POWER_DELIVERY
#define CONFIG_USB_PD_ALT_MODE
#define CONFIG_USB_PD_DUAL_ROLE
diff --git a/board/hoho/board.h b/board/hoho/board.h
index 41c7dc40a7..0ed93413e5 100644
--- a/board/hoho/board.h
+++ b/board/hoho/board.h
@@ -29,7 +29,7 @@
#define CONFIG_SPI_CS_GPIO GPIO_PD_MCDP_SPI_CS_L
#define CONFIG_USB
#define CONFIG_USB_BOS
-#define CONFIG_USB_INHIBIT
+#define CONFIG_USB_INHIBIT_CONNECT
#define CONFIG_USB_POWER_DELIVERY
#define CONFIG_USB_PD_ALT_MODE
#define CONFIG_USB_PD_DUAL_ROLE
diff --git a/chip/stm32/usb.c b/chip/stm32/usb.c
index 425b768632..a0a37524be 100644
--- a/chip/stm32/usb.c
+++ b/chip/stm32/usb.c
@@ -295,13 +295,16 @@ void usb_init(void)
/* set interrupts mask : reset/correct tranfer/errors */
STM32_USB_CNTR = 0xe400;
-#ifndef CONFIG_USB_INHIBIT
+#ifndef CONFIG_USB_INHIBIT_CONNECT
usb_connect();
#endif
CPRINTF("USB init done\n");
}
+
+#ifndef CONFIG_USB_INHIBIT_INIT
DECLARE_HOOK(HOOK_INIT, usb_init, HOOK_PRIO_DEFAULT);
+#endif
void usb_release(void)
{
diff --git a/include/config.h b/include/config.h
index 92cd267121..324646f7e0 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1129,8 +1129,11 @@
/* Compile chip support for the USB device controller */
#undef CONFIG_USB
+/* Disable automatic connection of USB peripheral */
+#undef CONFIG_USB_INHIBIT_CONNECT
+
/* Disable automatic initialization of USB peripheral */
-#undef CONFIG_USB_INHIBIT
+#undef CONFIG_USB_INHIBIT_INIT
/* Support simple control of power to the device's USB ports */
#undef CONFIG_USB_PORT_POWER_DUMB
diff --git a/include/usb_api.h b/include/usb_api.h
index feeb6abb27..dc0a0fd654 100644
--- a/include/usb_api.h
+++ b/include/usb_api.h
@@ -14,9 +14,10 @@
/*
* Initialize the USB peripheral, enabling its clock and configuring the DP/DN
- * GPIOs correctly. This function is called via an init hook, but may need to
- * be called again if usb_release is called. This function will call
- * usb_connect by default unless CONFIG_USB_INHIBIT is defined.
+ * GPIOs correctly. This function is called via an init hook (unless the board
+ * defined CONFIG_USB_INHIBIT_INIT), but may need to be called again if
+ * usb_release is called. This function will call usb_connect by default
+ * unless CONFIG_USB_INHIBIT_CONNECT is defined.
*/
void usb_init(void);