Message ID | 622262de3da148ecccbed5a82406421b213c997e.1541648784.git.thinhn@synopsys.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: dwc3: Workaround isoc start_transfer failure | expand |
Hi, Thinh Nguyen <thinh.nguyen@synopsys.com> writes: > Add a new field to dwc3 structure to track VERSIONTYPE. The VERSIONTYPE > is represented in ASCII in the 32-bit VERSIONTYPE register. In > DWC_usb31, sub releases for each version are tracked with VERSIONTYPE > such as "ea01" and "ea02". > > Signed-off-by: Thinh Nguyen <thinhn@synopsys.com> > --- > drivers/usb/dwc3/core.c | 1 + > drivers/usb/dwc3/core.h | 5 +++++ > 2 files changed, 6 insertions(+) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index becfbb87f791..437816ff8860 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -702,6 +702,7 @@ static bool dwc3_core_is_valid(struct dwc3 *dwc) > /* Detected DWC_usb31 IP */ > dwc->revision = dwc3_readl(dwc->regs, DWC3_VER_NUMBER); > dwc->revision |= DWC3_REVISION_IS_DWC31; > + dwc->version_type = dwc3_readl(dwc->regs, DWC3_VER_TYPE); > } else { > return false; > } > diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h > index 5bfb62533e0f..4573e1bfd56e 100644 > --- a/drivers/usb/dwc3/core.h > +++ b/drivers/usb/dwc3/core.h > @@ -918,6 +918,7 @@ struct dwc3_scratchpad_array { > * @u1u2: only used on revisions <1.83a for workaround > * @maximum_speed: maximum speed requested (mainly for testing purposes) > * @revision: revision register contents > + * @version_type: VERSIONTYPE register contents, a sub release of a revision > * @dr_mode: requested mode of operation > * @current_dr_role: current role of operation when in dual-role mode > * @desired_dr_role: desired role of operation when in dual-role mode > @@ -1104,6 +1105,10 @@ struct dwc3 { > #define DWC3_USB31_REVISION_110A (0x3131302a | DWC3_REVISION_IS_DWC31) > #define DWC3_USB31_REVISION_120A (0x3132302a | DWC3_REVISION_IS_DWC31) > > + u32 version_type; > + > +#define DWC31_VERSIONTYPE_EA01 0x65613031 on patch 2 you talk about ea06, why don't you have a define for all those version types?
Hi Felipe, On 11/7/2018 11:10 PM, Felipe Balbi wrote: > Hi, > > Thinh Nguyen <thinh.nguyen@synopsys.com> writes: >> Add a new field to dwc3 structure to track VERSIONTYPE. The VERSIONTYPE >> is represented in ASCII in the 32-bit VERSIONTYPE register. In >> DWC_usb31, sub releases for each version are tracked with VERSIONTYPE >> such as "ea01" and "ea02". >> >> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com> >> --- >> drivers/usb/dwc3/core.c | 1 + >> drivers/usb/dwc3/core.h | 5 +++++ >> 2 files changed, 6 insertions(+) >> >> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c >> index becfbb87f791..437816ff8860 100644 >> --- a/drivers/usb/dwc3/core.c >> +++ b/drivers/usb/dwc3/core.c >> @@ -702,6 +702,7 @@ static bool dwc3_core_is_valid(struct dwc3 *dwc) >> /* Detected DWC_usb31 IP */ >> dwc->revision = dwc3_readl(dwc->regs, DWC3_VER_NUMBER); >> dwc->revision |= DWC3_REVISION_IS_DWC31; >> + dwc->version_type = dwc3_readl(dwc->regs, DWC3_VER_TYPE); >> } else { >> return false; >> } >> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h >> index 5bfb62533e0f..4573e1bfd56e 100644 >> --- a/drivers/usb/dwc3/core.h >> +++ b/drivers/usb/dwc3/core.h >> @@ -918,6 +918,7 @@ struct dwc3_scratchpad_array { >> * @u1u2: only used on revisions <1.83a for workaround >> * @maximum_speed: maximum speed requested (mainly for testing purposes) >> * @revision: revision register contents >> + * @version_type: VERSIONTYPE register contents, a sub release of a revision >> * @dr_mode: requested mode of operation >> * @current_dr_role: current role of operation when in dual-role mode >> * @desired_dr_role: desired role of operation when in dual-role mode >> @@ -1104,6 +1105,10 @@ struct dwc3 { >> #define DWC3_USB31_REVISION_110A (0x3131302a | DWC3_REVISION_IS_DWC31) >> #define DWC3_USB31_REVISION_120A (0x3132302a | DWC3_REVISION_IS_DWC31) >> >> + u32 version_type; >> + >> +#define DWC31_VERSIONTYPE_EA01 0x65613031 > on patch 2 you talk about ea06, why don't you have a define for all > those version types? > > Sure. I can do that. Thinh
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index becfbb87f791..437816ff8860 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -702,6 +702,7 @@ static bool dwc3_core_is_valid(struct dwc3 *dwc) /* Detected DWC_usb31 IP */ dwc->revision = dwc3_readl(dwc->regs, DWC3_VER_NUMBER); dwc->revision |= DWC3_REVISION_IS_DWC31; + dwc->version_type = dwc3_readl(dwc->regs, DWC3_VER_TYPE); } else { return false; } diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 5bfb62533e0f..4573e1bfd56e 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -918,6 +918,7 @@ struct dwc3_scratchpad_array { * @u1u2: only used on revisions <1.83a for workaround * @maximum_speed: maximum speed requested (mainly for testing purposes) * @revision: revision register contents + * @version_type: VERSIONTYPE register contents, a sub release of a revision * @dr_mode: requested mode of operation * @current_dr_role: current role of operation when in dual-role mode * @desired_dr_role: desired role of operation when in dual-role mode @@ -1104,6 +1105,10 @@ struct dwc3 { #define DWC3_USB31_REVISION_110A (0x3131302a | DWC3_REVISION_IS_DWC31) #define DWC3_USB31_REVISION_120A (0x3132302a | DWC3_REVISION_IS_DWC31) + u32 version_type; + +#define DWC31_VERSIONTYPE_EA01 0x65613031 + enum dwc3_ep0_next ep0_next_event; enum dwc3_ep0_state ep0state; enum dwc3_link_state link_state;
Add a new field to dwc3 structure to track VERSIONTYPE. The VERSIONTYPE is represented in ASCII in the 32-bit VERSIONTYPE register. In DWC_usb31, sub releases for each version are tracked with VERSIONTYPE such as "ea01" and "ea02". Signed-off-by: Thinh Nguyen <thinhn@synopsys.com> --- drivers/usb/dwc3/core.c | 1 + drivers/usb/dwc3/core.h | 5 +++++ 2 files changed, 6 insertions(+)