Hao Wu wrote:
This patch adds one function in otg util, then all otg transceiver
driver can share this function to get otg state string.
Signed-off-by: Hao Wu <hao.wu@xxxxxxxxx>
---
drivers/usb/otg/otg.c | 31 +++++++++++++++++++++++++++++++
include/linux/usb/otg.h | 6 ++++++
2 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/otg/otg.c b/drivers/usb/otg/otg.c
index 0a43a7d..54f2986 100644
--- a/drivers/usb/otg/otg.c
+++ b/drivers/usb/otg/otg.c
@@ -64,3 +64,34 @@ int otg_set_transceiver(struct otg_transceiver *x)
return 0;
}
EXPORT_SYMBOL(otg_set_transceiver);
+
+/**
+ * otg_set_transceiver - declare the (single) OTG transceiver
+ * @state: the USB OTG transceiver to be used; or NULL
+ *
+ * This call is exclusively for use by transceiver drivers, which
+ * coordinate the activities of drivers for host and peripheral
+ * controllers, and in some cases for VBUS current regulation.
+ */
+
+const char *otg_state_string(enum usb_otg_state state)
+{
+ switch (state) {
+ case OTG_STATE_A_IDLE: return "a_idle";
+ case OTG_STATE_A_WAIT_VRISE: return "a_wait_vrise";
+ case OTG_STATE_A_WAIT_BCON: return "a_wait_bcon";
+ case OTG_STATE_A_HOST: return "a_host";
+ case OTG_STATE_A_SUSPEND: return "a_suspend";
+ case OTG_STATE_A_PERIPHERAL: return "a_peripheral";
+ case OTG_STATE_A_WAIT_VFALL: return "a_wait_vfall";
+ case OTG_STATE_A_VBUS_ERR: return "a_vbus_err";
+ case OTG_STATE_B_IDLE: return "b_idle";
+ case OTG_STATE_B_SRP_INIT: return "b_srp_init";
+ case OTG_STATE_B_PERIPHERAL: return "b_peripheral";
+ case OTG_STATE_B_WAIT_ACON: return "b_wait_acon";
+ case OTG_STATE_B_HOST: return "b_host";
+ default: return "UNDEFINED";
+ }
+}
+EXPORT_SYMBOL(otg_state_string);
+
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h
index 97292ab..9d56007 100644
--- a/include/linux/usb/otg.h
+++ b/include/linux/usb/otg.h
@@ -193,6 +193,7 @@ otg_shutdown(struct otg_transceiver *otg)
#ifdef CONFIG_USB_OTG_UTILS
extern struct otg_transceiver *otg_get_transceiver(void);
extern void otg_put_transceiver(struct otg_transceiver *);
+extern const char *otg_state_string(enum usb_otg_state);
#else
static inline struct otg_transceiver *otg_get_transceiver(void)
{
@@ -202,6 +203,11 @@ static inline struct otg_transceiver *otg_get_transceiver(void)
static inline void otg_put_transceiver(struct otg_transceiver *x)
{
}
+
+static const char *otg_state_string(enum usb_otg_state)
+{
+ return "UNDEFINED";
+}
#endif
/* Context: can sleep */
I think it will conflict with the same function defined in
drivers/usb/musb/musb_core.c. I guess that one should be removed...
WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html