MIPS: OCTEON: reintroduce crypto features check

Reintroduce run-time check for crypto features. The old one was deleted
because it was unreliable, now decide the crypto availability on early
boot when the model string is constructed.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Aaro Koskinen 2014-12-21 22:54:00 +02:00 committed by Herbert Xu
parent 1e585ef51c
commit 011f3c6cbb
2 changed files with 21 additions and 2 deletions

View File

@ -27,6 +27,9 @@
#include <asm/octeon/octeon.h> #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 * Read a byte of fuse data
* @byte_addr: address to read * @byte_addr: address to read
@ -103,6 +106,9 @@ static const char *__init octeon_model_get_string_buffer(uint32_t chip_id,
else else
suffix = "NSP"; suffix = "NSP";
if (!fus_dat2.s.nocrypto)
__octeon_feature_bits |= OCTEON_HAS_CRYPTO;
/* /*
* Assume pass number is encoded using <5:3><2:0>. Exceptions * Assume pass number is encoded using <5:3><2:0>. Exceptions
* will be fixed later. * will be fixed later.

View File

@ -46,8 +46,6 @@ enum octeon_feature {
OCTEON_FEATURE_SAAD, OCTEON_FEATURE_SAAD,
/* Does this Octeon support the ZIP offload engine? */ /* Does this Octeon support the ZIP offload engine? */
OCTEON_FEATURE_ZIP, OCTEON_FEATURE_ZIP,
/* Does this Octeon support crypto acceleration using COP2? */
OCTEON_FEATURE_CRYPTO,
OCTEON_FEATURE_DORM_CRYPTO, OCTEON_FEATURE_DORM_CRYPTO,
/* Does this Octeon support PCI express? */ /* Does this Octeon support PCI express? */
OCTEON_FEATURE_PCIE, OCTEON_FEATURE_PCIE,
@ -86,6 +84,21 @@ enum octeon_feature {
OCTEON_MAX_FEATURE 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 * Determine if the current Octeon supports a specific feature. These
* checks have been optimized to be fairly quick, but they should still * checks have been optimized to be fairly quick, but they should still