2009-05-06 21:12:49 +03:00
|
|
|
The octeon-ethernet driver needs to check for additional chip specific
|
|
|
|
features, we add them to the octeon_has_feature() framework.
|
|
|
|
|
|
|
|
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
|
|
|
|
---
|
|
|
|
arch/mips/include/asm/octeon/octeon-feature.h | 27 +++++++++++++++++++++++++
|
|
|
|
1 files changed, 27 insertions(+), 0 deletions(-)
|
|
|
|
|
|
|
|
--- a/arch/mips/include/asm/octeon/octeon-feature.h
|
|
|
|
+++ b/arch/mips/include/asm/octeon/octeon-feature.h
|
|
|
|
@@ -57,6 +57,13 @@ enum octeon_feature {
|
|
|
|
OCTEON_FEATURE_RAID,
|
|
|
|
/* Octeon has a builtin USB */
|
|
|
|
OCTEON_FEATURE_USB,
|
|
|
|
+ /* Octeon IPD can run without using work queue entries */
|
|
|
|
+ OCTEON_FEATURE_NO_WPTR,
|
|
|
|
+ /* Octeon has DFA state machines */
|
|
|
|
+ OCTEON_FEATURE_DFA,
|
|
|
|
+ /* Octeon MDIO block supports clause 45 transactions for 10
|
|
|
|
+ * Gig support */
|
|
|
|
+ OCTEON_FEATURE_MDIO_CLAUSE_45,
|
|
|
|
};
|
|
|
|
|
|
|
|
static inline int cvmx_fuse_read(int fuse);
|
2009-05-18 16:08:46 +03:00
|
|
|
@@ -112,6 +119,26 @@ static inline int octeon_has_feature(enu
|
2009-05-06 21:12:49 +03:00
|
|
|
case OCTEON_FEATURE_USB:
|
|
|
|
return !(OCTEON_IS_MODEL(OCTEON_CN38XX)
|
|
|
|
|| OCTEON_IS_MODEL(OCTEON_CN58XX));
|
|
|
|
+ case OCTEON_FEATURE_NO_WPTR:
|
|
|
|
+ return (OCTEON_IS_MODEL(OCTEON_CN56XX)
|
|
|
|
+ || OCTEON_IS_MODEL(OCTEON_CN52XX))
|
|
|
|
+ && !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 if (OCTEON_IS_MODEL(OCTEON_CN38XX_PASS1))
|
|
|
|
+ return 1;
|
|
|
|
+ else
|
|
|
|
+ return !cvmx_fuse_read(120);
|
|
|
|
+ case OCTEON_FEATURE_MDIO_CLAUSE_45:
|
|
|
|
+ return !(OCTEON_IS_MODEL(OCTEON_CN3XXX)
|
|
|
|
+ || OCTEON_IS_MODEL(OCTEON_CN58XX)
|
|
|
|
+ || OCTEON_IS_MODEL(OCTEON_CN50XX));
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|