Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1f1f590 authored by David Daney's avatar David Daney Committed by Ralf Baechle
Browse files

MIPS: Cavium-Octeon: Add more chip specific feature tests.



The octeon-ethernet driver needs to check for additional chip specific
features, we add them to the octeon_has_feature() framework.

Signed-off-by: default avatarDavid Daney <ddaney@caviumnetworks.com>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 2b1b62e8
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -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);
@@ -112,6 +119,26 @@ static inline int octeon_has_feature(enum octeon_feature feature)
	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;
}