usb: dwc3: Track DWC_usb31 VERSIONTYPE
authorThinh Nguyen <thinh.nguyen@synopsys.com>
Thu, 8 Nov 2018 20:06:48 +0000 (12:06 -0800)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 26 Nov 2018 07:06:32 +0000 (09:06 +0200)
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>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc3/core.c
drivers/usb/dwc3/core.h

index 8f6d9c6f016e78fe302c901cece31169c7c070ad..eb064a65363cc9c09dfa8a1d8193edac05393b97 100644 (file)
@@ -705,6 +705,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;
        }
index eec4b9735fb79acdf68ea4cfe17d14ba36d2bcf7..709e8dd356eedf5f43f9eb584fff5a9c06d8bcca 100644 (file)
@@ -928,6 +928,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
@@ -1117,6 +1118,15 @@ 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
+#define DWC31_VERSIONTYPE_EA02         0x65613032
+#define DWC31_VERSIONTYPE_EA03         0x65613033
+#define DWC31_VERSIONTYPE_EA04         0x65613034
+#define DWC31_VERSIONTYPE_EA05         0x65613035
+#define DWC31_VERSIONTYPE_EA06         0x65613036
+
        enum dwc3_ep0_next      ep0_next_event;
        enum dwc3_ep0_state     ep0state;
        enum dwc3_link_state    link_state;