>> 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... Thanks for the comment. You're correct. If no more comment on this, I will add one patch to update musb code to use this function in otg_util. Hao -- 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