|
@@ -86,8 +86,6 @@ enum octeon_feature {
|
|
|
OCTEON_MAX_FEATURE
|
|
|
};
|
|
|
|
|
|
-static inline int cvmx_fuse_read(int fuse);
|
|
|
-
|
|
|
/**
|
|
|
* Determine if the current Octeon supports a specific feature. These
|
|
|
* checks have been optimized to be fairly quick, but they should still
|
|
@@ -105,33 +103,6 @@ static inline int octeon_has_feature(enum octeon_feature feature)
|
|
|
case OCTEON_FEATURE_SAAD:
|
|
|
return !OCTEON_IS_MODEL(OCTEON_CN3XXX);
|
|
|
|
|
|
- case OCTEON_FEATURE_ZIP:
|
|
|
- if (OCTEON_IS_MODEL(OCTEON_CN30XX)
|
|
|
- || OCTEON_IS_MODEL(OCTEON_CN50XX)
|
|
|
- || OCTEON_IS_MODEL(OCTEON_CN52XX))
|
|
|
- return 0;
|
|
|
- else if (OCTEON_IS_MODEL(OCTEON_CN38XX_PASS1))
|
|
|
- return 1;
|
|
|
- else
|
|
|
- return !cvmx_fuse_read(121);
|
|
|
-
|
|
|
- case OCTEON_FEATURE_CRYPTO:
|
|
|
- if (OCTEON_IS_MODEL(OCTEON_CN6XXX)) {
|
|
|
- union cvmx_mio_fus_dat2 fus_2;
|
|
|
- fus_2.u64 = cvmx_read_csr(CVMX_MIO_FUS_DAT2);
|
|
|
- if (fus_2.s.nocrypto || fus_2.s.nomul) {
|
|
|
- return 0;
|
|
|
- } else if (!fus_2.s.dorm_crypto) {
|
|
|
- return 1;
|
|
|
- } else {
|
|
|
- union cvmx_rnm_ctl_status st;
|
|
|
- st.u64 = cvmx_read_csr(CVMX_RNM_CTL_STATUS);
|
|
|
- return st.s.eer_val;
|
|
|
- }
|
|
|
- } else {
|
|
|
- return !cvmx_fuse_read(90);
|
|
|
- }
|
|
|
-
|
|
|
case OCTEON_FEATURE_DORM_CRYPTO:
|
|
|
if (OCTEON_IS_MODEL(OCTEON_CN6XXX)) {
|
|
|
union cvmx_mio_fus_dat2 fus_2;
|
|
@@ -188,29 +159,6 @@ static inline int octeon_has_feature(enum octeon_feature feature)
|
|
|
&& !OCTEON_IS_MODEL(OCTEON_CN56XX_PASS1_X)
|
|
|
&& !OCTEON_IS_MODEL(OCTEON_CN52XX_PASS1_X);
|
|
|
|
|
|
- case OCTEON_FEATURE_DFA:
|
|
|
- if (!OCTEON_IS_MODEL(OCTEON_CN38XX)
|
|
|
- && !OCTEON_IS_MODEL(OCTEON_CN31XX)
|
|
|
- && !OCTEON_IS_MODEL(OCTEON_CN58XX))
|
|
|
- return 0;
|
|
|
- else if (OCTEON_IS_MODEL(OCTEON_CN3020))
|
|
|
- return 0;
|
|
|
- else
|
|
|
- return !cvmx_fuse_read(120);
|
|
|
-
|
|
|
- case OCTEON_FEATURE_HFA:
|
|
|
- if (!OCTEON_IS_MODEL(OCTEON_CN6XXX))
|
|
|
- return 0;
|
|
|
- else
|
|
|
- return !cvmx_fuse_read(90);
|
|
|
-
|
|
|
- case OCTEON_FEATURE_DFM:
|
|
|
- if (!(OCTEON_IS_MODEL(OCTEON_CN63XX)
|
|
|
- || OCTEON_IS_MODEL(OCTEON_CN66XX)))
|
|
|
- return 0;
|
|
|
- else
|
|
|
- return !cvmx_fuse_read(90);
|
|
|
-
|
|
|
case OCTEON_FEATURE_MDIO_CLAUSE_45:
|
|
|
return !(OCTEON_IS_MODEL(OCTEON_CN3XXX)
|
|
|
|| OCTEON_IS_MODEL(OCTEON_CN58XX)
|