struct nfp_nsp {
        struct nfp_cpp *cpp;
        struct nfp_resource *res;
+       struct {
+               u16 major;
+               u16 minor;
+       } ver;
 };
 
 static int nfp_nsp_check(struct nfp_nsp *state)
                return -ENODEV;
        }
 
-       if (FIELD_GET(NSP_STATUS_MAJOR, reg) != NSP_MAJOR ||
-           FIELD_GET(NSP_STATUS_MINOR, reg) < NSP_MINOR) {
-               nfp_err(cpp, "Unsupported ABI %lld.%lld\n",
-                       FIELD_GET(NSP_STATUS_MAJOR, reg),
-                       FIELD_GET(NSP_STATUS_MINOR, reg));
+       state->ver.major = FIELD_GET(NSP_STATUS_MAJOR, reg);
+       state->ver.minor = FIELD_GET(NSP_STATUS_MINOR, reg);
+
+       if (state->ver.major != NSP_MAJOR || state->ver.minor < NSP_MINOR) {
+               nfp_err(cpp, "Unsupported ABI %hu.%hu\n",
+                       state->ver.major, state->ver.minor);
                return -EINVAL;
        }
 
        int ret, err;
        u32 cpp_id;
 
-       err = nfp_cpp_readq(cpp, nfp_resource_cpp_id(nsp->res),
-                           nfp_resource_address(nsp->res) + NSP_STATUS, ®);
-       if (err < 0)
-               return err;
-
-       if (FIELD_GET(NSP_STATUS_MINOR, reg) < 13) {
-               nfp_err(cpp, "NSP: Code 0x%04x with buffer not supported (ABI %lld.%lld)\n",
-                       code, FIELD_GET(NSP_STATUS_MAJOR, reg),
-                       FIELD_GET(NSP_STATUS_MINOR, reg));
+       if (nsp->ver.minor < 13) {
+               nfp_err(cpp, "NSP: Code 0x%04x with buffer not supported (ABI %hu.%hu)\n",
+                       code, nsp->ver.major, nsp->ver.minor);
                return -EOPNOTSUPP;
        }