#define DWC2_FS_IOT_REV_1_00a  0x5531100a
 #define DWC2_HS_IOT_REV_1_00a  0x5532100a
 
+       /* DWC OTG HW Core ID */
+#define DWC2_OTG_ID            0x4f540000
+#define DWC2_FS_IOT_ID         0x55310000
+#define DWC2_HS_IOT_ID         0x55320000
+
 #if IS_ENABLED(CONFIG_USB_DWC2_HOST) || IS_ENABLED(CONFIG_USB_DWC2_DUAL_ROLE)
        union dwc2_hcd_internal_flags {
                u32 d32;
 
 #define GUID                           HSOTG_REG(0x003c)
 #define GSNPSID                                HSOTG_REG(0x0040)
 #define GHWCFG1                                HSOTG_REG(0x0044)
+#define GSNPSID_ID_MASK                        GENMASK(31, 16)
 
 #define GHWCFG2                                HSOTG_REG(0x0048)
 #define GHWCFG2_OTG_ENABLE_IC_USB              BIT(31)
 
        /*
         * Attempt to ensure this device is really a DWC_otg Controller.
         * Read and verify the GSNPSID register contents. The value should be
-        * 0x45f42xxx or 0x45f43xxx, which corresponds to either "OT2" or "OT3",
-        * as in "OTG version 2.xx" or "OTG version 3.xx".
+        * 0x45f4xxxx, 0x5531xxxx or 0x5532xxxx
         */
+
        hw->snpsid = dwc2_readl(hsotg->regs + GSNPSID);
-       if ((hw->snpsid & 0xfffff000) != 0x4f542000 &&
-           (hw->snpsid & 0xfffff000) != 0x4f543000 &&
-           (hw->snpsid & 0xffff0000) != 0x55310000 &&
-           (hw->snpsid & 0xffff0000) != 0x55320000) {
+       if ((hw->snpsid & GSNPSID_ID_MASK) != DWC2_OTG_ID &&
+           (hw->snpsid & GSNPSID_ID_MASK) != DWC2_FS_IOT_ID &&
+           (hw->snpsid & GSNPSID_ID_MASK) != DWC2_HS_IOT_ID) {
                dev_err(hsotg->dev, "Bad value for GSNPSID: 0x%08x\n",
                        hw->snpsid);
                return -ENODEV;