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

Commit ecc79648 authored by Matt Carlson's avatar Matt Carlson Committed by David S. Miller
Browse files

tg3: Detect APE firmware types



This patch adds code to determine the APE firmware type and report this
along with the firmware version.

Reviewed-by: default avatarBenjamin Li <benli@broadcom.com>
Reviewed-by: default avatarMichael Chan <mchan@broadcom.com>
Signed-off-by: default avatarMatt Carlson <mcarlson@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8c69b1e7
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -12710,6 +12710,7 @@ static void __devinit tg3_read_dash_ver(struct tg3 *tp)
{
{
	int vlen;
	int vlen;
	u32 apedata;
	u32 apedata;
	char *fwtype;


	if (!(tp->tg3_flags3 & TG3_FLG3_ENABLE_APE) ||
	if (!(tp->tg3_flags3 & TG3_FLG3_ENABLE_APE) ||
	    !(tp->tg3_flags  & TG3_FLAG_ENABLE_ASF))
	    !(tp->tg3_flags  & TG3_FLAG_ENABLE_ASF))
@@ -12725,9 +12726,15 @@ static void __devinit tg3_read_dash_ver(struct tg3 *tp)


	apedata = tg3_ape_read32(tp, TG3_APE_FW_VERSION);
	apedata = tg3_ape_read32(tp, TG3_APE_FW_VERSION);


	if (tg3_ape_read32(tp, TG3_APE_FW_FEATURES) & TG3_APE_FW_FEATURE_NCSI)
		fwtype = "NCSI";
	else
		fwtype = "DASH";

	vlen = strlen(tp->fw_ver);
	vlen = strlen(tp->fw_ver);


	snprintf(&tp->fw_ver[vlen], TG3_VER_SIZE - vlen, " DASH v%d.%d.%d.%d",
	snprintf(&tp->fw_ver[vlen], TG3_VER_SIZE - vlen, " %s v%d.%d.%d.%d",
		 fwtype,
		 (apedata & APE_FW_VERSION_MAJMSK) >> APE_FW_VERSION_MAJSFT,
		 (apedata & APE_FW_VERSION_MAJMSK) >> APE_FW_VERSION_MAJSFT,
		 (apedata & APE_FW_VERSION_MINMSK) >> APE_FW_VERSION_MINSFT,
		 (apedata & APE_FW_VERSION_MINMSK) >> APE_FW_VERSION_MINSFT,
		 (apedata & APE_FW_VERSION_REVMSK) >> APE_FW_VERSION_REVSFT,
		 (apedata & APE_FW_VERSION_REVMSK) >> APE_FW_VERSION_REVSFT,
+2 −0
Original line number Original line Diff line number Diff line
@@ -2161,6 +2161,8 @@
/* APE shared memory.  Accessible through BAR1 */
/* APE shared memory.  Accessible through BAR1 */
#define TG3_APE_FW_STATUS		0x400c
#define TG3_APE_FW_STATUS		0x400c
#define  APE_FW_STATUS_READY		 0x00000100
#define  APE_FW_STATUS_READY		 0x00000100
#define TG3_APE_FW_FEATURES		0x4010
#define  TG3_APE_FW_FEATURE_NCSI	 0x00000002
#define TG3_APE_FW_VERSION		0x4018
#define TG3_APE_FW_VERSION		0x4018
#define  APE_FW_VERSION_MAJMSK		 0xff000000
#define  APE_FW_VERSION_MAJMSK		 0xff000000
#define  APE_FW_VERSION_MAJSFT		 24
#define  APE_FW_VERSION_MAJSFT		 24