#include <asm/octeon/octeon.h>
 
+enum octeon_feature_bits __octeon_feature_bits __read_mostly;
+EXPORT_SYMBOL_GPL(__octeon_feature_bits);
+
 /**
  * Read a byte of fuse data
  * @byte_addr:  address to read
        else
                suffix = "NSP";
 
+       if (!fus_dat2.s.nocrypto)
+               __octeon_feature_bits |= OCTEON_HAS_CRYPTO;
+
        /*
         * Assume pass number is encoded using <5:3><2:0>. Exceptions
         * will be fixed later.
 
        OCTEON_FEATURE_SAAD,
        /* Does this Octeon support the ZIP offload engine? */
        OCTEON_FEATURE_ZIP,
-       /* Does this Octeon support crypto acceleration using COP2? */
-       OCTEON_FEATURE_CRYPTO,
        OCTEON_FEATURE_DORM_CRYPTO,
        /* Does this Octeon support PCI express? */
        OCTEON_FEATURE_PCIE,
        OCTEON_MAX_FEATURE
 };
 
+enum octeon_feature_bits {
+       OCTEON_HAS_CRYPTO = 0x0001,     /* Crypto acceleration using COP2 */
+};
+extern enum octeon_feature_bits __octeon_feature_bits;
+
+/**
+ * octeon_has_crypto() - Check if this OCTEON has crypto acceleration support.
+ *
+ * Returns: Non-zero if the feature exists. Zero if the feature does not exist.
+ */
+static inline int octeon_has_crypto(void)
+{
+       return __octeon_feature_bits & OCTEON_HAS_CRYPTO;
+}
+
 /**
  * Determine if the current Octeon supports a specific feature. These
  * checks have been optimized to be fairly quick, but they should still