#define XLNX_USB_TRAFFIC_ROUTE_CONFIG          0x005C
 #define XLNX_USB_TRAFFIC_ROUTE_FPD             0x1
 
-/* Versal USB Reset ID */
-#define VERSAL_USB_RESET_ID                    0xC104036
-
 #define XLNX_USB_FPD_PIPE_CLK                  0x7c
 #define PIPE_CLK_DESELECT                      1
 #define PIPE_CLK_SELECT                                0
 static int dwc3_xlnx_init_versal(struct dwc3_xlnx *priv_data)
 {
        struct device           *dev = priv_data->dev;
+       struct reset_control    *crst;
        int                     ret;
 
+       crst = devm_reset_control_get_exclusive(dev, NULL);
+       if (IS_ERR(crst))
+               return dev_err_probe(dev, PTR_ERR(crst), "failed to get reset signal\n");
+
        dwc3_xlnx_mask_phy_rst(priv_data, false);
 
        /* Assert and De-assert reset */
-       ret = zynqmp_pm_reset_assert(VERSAL_USB_RESET_ID,
-                                    PM_RESET_ACTION_ASSERT);
+       ret = reset_control_assert(crst);
        if (ret < 0) {
                dev_err_probe(dev, ret, "failed to assert Reset\n");
                return ret;
        }
 
-       ret = zynqmp_pm_reset_assert(VERSAL_USB_RESET_ID,
-                                    PM_RESET_ACTION_RELEASE);
+       ret = reset_control_deassert(crst);
        if (ret < 0) {
                dev_err_probe(dev, ret, "failed to De-assert Reset\n");
                return ret;