usb: chipidea: usb OTG fsm initialization.
This patch adds OTG fsm related initialization when do otg init, add a seperate file for OTG fsm related utilities. Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Li Jun <b47624@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
#include <linux/irqreturn.h>
|
||||
#include <linux/usb.h>
|
||||
#include <linux/usb/gadget.h>
|
||||
#include <linux/usb/otg-fsm.h>
|
||||
|
||||
/******************************************************************************
|
||||
* DEFINE
|
||||
@@ -139,6 +140,7 @@ struct hw_bank {
|
||||
* @roles: array of supported roles for this controller
|
||||
* @role: current role
|
||||
* @is_otg: if the device is otg-capable
|
||||
* @fsm: otg finite state machine
|
||||
* @work: work for role changing
|
||||
* @wq: workqueue thread
|
||||
* @qh_pool: allocation pool for queue heads
|
||||
@@ -174,6 +176,7 @@ struct ci_hdrc {
|
||||
struct ci_role_driver *roles[CI_ROLE_END];
|
||||
enum ci_role role;
|
||||
bool is_otg;
|
||||
struct otg_fsm fsm;
|
||||
struct work_struct work;
|
||||
struct workqueue_struct *wq;
|
||||
|
||||
@@ -319,6 +322,20 @@ static inline u32 hw_test_and_write(struct ci_hdrc *ci, enum ci_hw_regs reg,
|
||||
return (val & mask) >> __ffs(mask);
|
||||
}
|
||||
|
||||
/**
|
||||
* ci_otg_is_fsm_mode: runtime check if otg controller
|
||||
* is in otg fsm mode.
|
||||
*/
|
||||
static inline bool ci_otg_is_fsm_mode(struct ci_hdrc *ci)
|
||||
{
|
||||
#ifdef CONFIG_USB_OTG_FSM
|
||||
return ci->is_otg && ci->roles[CI_ROLE_HOST] &&
|
||||
ci->roles[CI_ROLE_GADGET];
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
u32 hw_read_intr_enable(struct ci_hdrc *ci);
|
||||
|
||||
u32 hw_read_intr_status(struct ci_hdrc *ci);
|
||||
|
Reference in New Issue
Block a user