return 0;
 }
 
+static int dprc_version_check(struct fsl_mc_io *mc_io, uint16_t handle)
+{
+       struct dprc_attributes attr;
+       int error;
+
+       memset(&attr, 0, sizeof(struct dprc_attributes));
+       error = dprc_get_attributes(mc_io, MC_CMD_NO_FLAGS, handle, &attr);
+       if (error == 0) {
+               if ((attr.version.major != DPRC_VER_MAJOR) ||
+                   (attr.version.minor != DPRC_VER_MINOR)) {
+                       printf("DPRC version mismatch found %u.%u,",
+                              attr.version.major,
+                              attr.version.minor);
+                       printf("supported version is %u.%u\n",
+                              DPRC_VER_MAJOR, DPRC_VER_MINOR);
+               }
+       }
+       return error;
+}
+
 static int dpio_init(void)
 {
        struct qbman_swp_desc p_des;
                goto err_get_attr;
        }
 
+       if ((attr.version.major != DPIO_VER_MAJOR) ||
+           (attr.version.minor != DPIO_VER_MINOR)) {
+               printf("DPIO version mismatch found %u.%u,",
+                      attr.version.major, attr.version.minor);
+               printf("supported version is %u.%u\n",
+                      DPIO_VER_MAJOR, DPIO_VER_MINOR);
+       }
+
        dflt_dpio->dpio_id = attr.id;
 #ifdef DEBUG
        printf("Init: DPIO id=0x%d\n", dflt_dpio->dpio_id);
 #endif
-
        err = dpio_enable(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpio->dpio_handle);
        if (err < 0) {
                printf("dpio_enable() failed %d\n", err);
                goto err_root_open;
        }
 
+       err = dprc_version_check(root_mc_io, root_dprc_handle);
+       if (err < 0) {
+               printf("dprc_version_check() failed: %d\n", err);
+               goto err_root_open;
+       }
+
        cfg.options = DPRC_CFG_OPT_TOPOLOGY_CHANGES_ALLOWED |
                      DPRC_CFG_OPT_OBJ_CREATE_ALLOWED |
                      DPRC_CFG_OPT_ALLOC_ALLOWED;
                goto err_get_attr;
        }
 
+       if ((dpbp_attr.version.major != DPBP_VER_MAJOR) ||
+           (dpbp_attr.version.minor != DPBP_VER_MINOR)) {
+               printf("DPBP version mismatch found %u.%u,",
+                      dpbp_attr.version.major, dpbp_attr.version.minor);
+               printf("supported version is %u.%u\n",
+                      DPBP_VER_MAJOR, DPBP_VER_MINOR);
+       }
+
        dflt_dpbp->dpbp_attr.id = dpbp_attr.id;
 #ifdef DEBUG
        printf("Init: DPBP id=0x%d\n", dflt_dpbp->dpbp_attr.id);
                goto err_get_attr;
        }
 
+       if ((dpni_attr.version.major != DPNI_VER_MAJOR) ||
+           (dpni_attr.version.minor != DPNI_VER_MINOR)) {
+               printf("DPNI version mismatch found %u.%u,",
+                      dpni_attr.version.major, dpni_attr.version.minor);
+               printf("supported version is %u.%u\n",
+                      DPNI_VER_MAJOR, DPNI_VER_MINOR);
+       }
+
        dflt_dpni->dpni_id = dpni_attr.id;
 #ifdef DEBUG
        printf("Init: DPNI id=0x%d\n", dflt_dpni->dpni_id);
 
        dpbp_close(dflt_mc_io, MC_CMD_NO_FLAGS, dflt_dpbp->dpbp_handle);
 }
 
+static int ldpaa_dpmac_version_check(struct fsl_mc_io *mc_io,
+                                    struct ldpaa_eth_priv *priv)
+{
+       struct dpmac_attr attr;
+       int error;
+
+       memset(&attr, 0, sizeof(struct dpmac_attr));
+       error = dpmac_get_attributes(mc_io, MC_CMD_NO_FLAGS,
+                                    priv->dpmac_handle,
+                                    &attr);
+       if (error == 0) {
+               if ((attr.version.major != DPMAC_VER_MAJOR) ||
+                   (attr.version.minor != DPMAC_VER_MINOR)) {
+                       printf("DPMAC version mismatch found %u.%u,",
+                              attr.version.major, attr.version.minor);
+                       printf("supported version is %u.%u\n",
+                              DPMAC_VER_MAJOR, DPMAC_VER_MINOR);
+               }
+       }
+
+       return error;
+}
+
 static int ldpaa_dpmac_setup(struct ldpaa_eth_priv *priv)
 {
        int err = 0;
                          &priv->dpmac_handle);
        if (err)
                printf("dpmac_create() failed\n");
+
+       err = ldpaa_dpmac_version_check(dflt_mc_io, priv);
+       if (err < 0)
+               printf("ldpaa_dpmac_version_check() failed: %d\n", err);
+
        return err;
 }