MIPS: OCTEON: Add model checking support for cn73xx, cnf75xx and cn78xx
[cascardo/linux.git] / arch / mips / include / asm / octeon / octeon-feature.h
index 3ed10a8..a19ca3b 100644 (file)
@@ -81,6 +81,10 @@ enum octeon_feature {
        OCTEON_FEATURE_HFA,
        OCTEON_FEATURE_DFM,
        OCTEON_FEATURE_CIU2,
+       OCTEON_FEATURE_CIU3,
+       /* Octeon has FPA first seen on 78XX */
+       OCTEON_FEATURE_FPA3,
+       OCTEON_FEATURE_FAU,
        OCTEON_MAX_FEATURE
 };
 
@@ -110,7 +114,7 @@ static inline int octeon_has_crypto(void)
  * Returns Non zero if the feature exists. Zero if the feature does not
  *        exist.
  */
-static inline int octeon_has_feature(enum octeon_feature feature)
+static inline bool octeon_has_feature(enum octeon_feature feature)
 {
        switch (feature) {
        case OCTEON_FEATURE_SAAD:
@@ -122,7 +126,7 @@ static inline int octeon_has_feature(enum octeon_feature feature)
                        fus_2.u64 = cvmx_read_csr(CVMX_MIO_FUS_DAT2);
                        return !fus_2.s.nocrypto && !fus_2.s.nomul && fus_2.s.dorm_crypto;
                } else {
-                       return 0;
+                       return false;
                }
 
        case OCTEON_FEATURE_PCIE:
@@ -190,11 +194,20 @@ static inline int octeon_has_feature(enum octeon_feature feature)
 
        case OCTEON_FEATURE_CIU2:
                return OCTEON_IS_MODEL(OCTEON_CN68XX);
+       case OCTEON_FEATURE_CIU3:
+       case OCTEON_FEATURE_FPA3:
+               return OCTEON_IS_MODEL(OCTEON_CN78XX)
+                       || OCTEON_IS_MODEL(OCTEON_CNF75XX)
+                       || OCTEON_IS_MODEL(OCTEON_CN73XX);
+       case OCTEON_FEATURE_FAU:
+               return !(OCTEON_IS_MODEL(OCTEON_CN78XX)
+                        || OCTEON_IS_MODEL(OCTEON_CNF75XX)
+                        || OCTEON_IS_MODEL(OCTEON_CN73XX));
 
        default:
                break;
        }
-       return 0;
+       return false;
 }
 
 #endif /* __OCTEON_FEATURE_H__ */