Loading drivers/usb/chipidea/core.c +27 −0 Original line number Diff line number Diff line Loading @@ -877,6 +877,33 @@ void ci_hdrc_remove_device(struct platform_device *pdev) } EXPORT_SYMBOL_GPL(ci_hdrc_remove_device); /** * ci_hdrc_query_available_role: get runtime available operation mode * * The glue layer can get current operation mode (host/peripheral/otg) * This function should be called after ci core device has created. * * @pdev: the platform device of ci core. * * Return runtime usb_dr_mode. */ enum usb_dr_mode ci_hdrc_query_available_role(struct platform_device *pdev) { struct ci_hdrc *ci = platform_get_drvdata(pdev); if (!ci) return USB_DR_MODE_UNKNOWN; if (ci->roles[CI_ROLE_HOST] && ci->roles[CI_ROLE_GADGET]) return USB_DR_MODE_OTG; else if (ci->roles[CI_ROLE_HOST]) return USB_DR_MODE_HOST; else if (ci->roles[CI_ROLE_GADGET]) return USB_DR_MODE_PERIPHERAL; else return USB_DR_MODE_UNKNOWN; } EXPORT_SYMBOL_GPL(ci_hdrc_query_available_role); static inline void ci_role_destroy(struct ci_hdrc *ci) { ci_hdrc_gadget_destroy(ci); Loading include/linux/usb/chipidea.h +2 −0 Original line number Diff line number Diff line Loading @@ -99,5 +99,7 @@ struct platform_device *ci_hdrc_add_device(struct device *dev, struct ci_hdrc_platform_data *platdata); /* Remove ci hdrc device */ void ci_hdrc_remove_device(struct platform_device *pdev); /* Get current available role */ enum usb_dr_mode ci_hdrc_query_available_role(struct platform_device *pdev); #endif Loading
drivers/usb/chipidea/core.c +27 −0 Original line number Diff line number Diff line Loading @@ -877,6 +877,33 @@ void ci_hdrc_remove_device(struct platform_device *pdev) } EXPORT_SYMBOL_GPL(ci_hdrc_remove_device); /** * ci_hdrc_query_available_role: get runtime available operation mode * * The glue layer can get current operation mode (host/peripheral/otg) * This function should be called after ci core device has created. * * @pdev: the platform device of ci core. * * Return runtime usb_dr_mode. */ enum usb_dr_mode ci_hdrc_query_available_role(struct platform_device *pdev) { struct ci_hdrc *ci = platform_get_drvdata(pdev); if (!ci) return USB_DR_MODE_UNKNOWN; if (ci->roles[CI_ROLE_HOST] && ci->roles[CI_ROLE_GADGET]) return USB_DR_MODE_OTG; else if (ci->roles[CI_ROLE_HOST]) return USB_DR_MODE_HOST; else if (ci->roles[CI_ROLE_GADGET]) return USB_DR_MODE_PERIPHERAL; else return USB_DR_MODE_UNKNOWN; } EXPORT_SYMBOL_GPL(ci_hdrc_query_available_role); static inline void ci_role_destroy(struct ci_hdrc *ci) { ci_hdrc_gadget_destroy(ci); Loading
include/linux/usb/chipidea.h +2 −0 Original line number Diff line number Diff line Loading @@ -99,5 +99,7 @@ struct platform_device *ci_hdrc_add_device(struct device *dev, struct ci_hdrc_platform_data *platdata); /* Remove ci hdrc device */ void ci_hdrc_remove_device(struct platform_device *pdev); /* Get current available role */ enum usb_dr_mode ci_hdrc_query_available_role(struct platform_device *pdev); #endif