Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 May 2016 16:01:34 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r299538 - head/sys/dev/siba
Message-ID:  <201605121601.u4CG1YcQ061763@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Thu May 12 16:01:33 2016
New Revision: 299538
URL: https://svnweb.freebsd.org/changeset/base/299538

Log:
  [siba] add TX power index entry parsing.
  
  This is required by the bwn(4) N-PHY support.
  
  Obtained from:	Linux ssb (definitions)

Modified:
  head/sys/dev/siba/siba_core.c
  head/sys/dev/siba/sibareg.h
  head/sys/dev/siba/sibavar.h

Modified: head/sys/dev/siba/siba_core.c
==============================================================================
--- head/sys/dev/siba/siba_core.c	Thu May 12 15:48:08 2016	(r299537)
+++ head/sys/dev/siba/siba_core.c	Thu May 12 16:01:33 2016	(r299538)
@@ -1569,6 +1569,47 @@ siba_sprom_r123(struct siba_sprom *out, 
 }
 
 static void
+siba_sprom_r458(struct siba_sprom *out, const uint16_t *in)
+{
+
+	SIBA_SHIFTOUT(txpid2g[0], SIBA_SPROM4_TXPID2G01,
+	    SIBA_SPROM4_TXPID2G0);
+	SIBA_SHIFTOUT(txpid2g[1], SIBA_SPROM4_TXPID2G01,
+	    SIBA_SPROM4_TXPID2G1);
+	SIBA_SHIFTOUT(txpid2g[2], SIBA_SPROM4_TXPID2G23,
+	    SIBA_SPROM4_TXPID2G2);
+	SIBA_SHIFTOUT(txpid2g[3], SIBA_SPROM4_TXPID2G23,
+	    SIBA_SPROM4_TXPID2G3);
+
+	SIBA_SHIFTOUT(txpid5gl[0], SIBA_SPROM4_TXPID5GL01,
+	    SIBA_SPROM4_TXPID5GL0);
+	SIBA_SHIFTOUT(txpid5gl[1], SIBA_SPROM4_TXPID5GL01,
+	    SIBA_SPROM4_TXPID5GL1);
+	SIBA_SHIFTOUT(txpid5gl[2], SIBA_SPROM4_TXPID5GL23,
+	    SIBA_SPROM4_TXPID5GL2);
+	SIBA_SHIFTOUT(txpid5gl[3], SIBA_SPROM4_TXPID5GL23,
+	    SIBA_SPROM4_TXPID5GL3);
+
+	SIBA_SHIFTOUT(txpid5g[0], SIBA_SPROM4_TXPID5G01,
+	    SIBA_SPROM4_TXPID5G0);
+	SIBA_SHIFTOUT(txpid5g[1], SIBA_SPROM4_TXPID5G01,
+	    SIBA_SPROM4_TXPID5G1);
+	SIBA_SHIFTOUT(txpid5g[2], SIBA_SPROM4_TXPID5G23,
+	    SIBA_SPROM4_TXPID5G2);
+	SIBA_SHIFTOUT(txpid5g[3], SIBA_SPROM4_TXPID5G23,
+	    SIBA_SPROM4_TXPID5G3);
+
+	SIBA_SHIFTOUT(txpid5gh[0], SIBA_SPROM4_TXPID5GH01,
+	    SIBA_SPROM4_TXPID5GH0);
+	SIBA_SHIFTOUT(txpid5gh[1], SIBA_SPROM4_TXPID5GH01,
+	    SIBA_SPROM4_TXPID5GH1);
+	SIBA_SHIFTOUT(txpid5gh[2], SIBA_SPROM4_TXPID5GH23,
+	    SIBA_SPROM4_TXPID5GH2);
+	SIBA_SHIFTOUT(txpid5gh[3], SIBA_SPROM4_TXPID5GH23,
+	    SIBA_SPROM4_TXPID5GH3);
+}
+
+static void
 siba_sprom_r45(struct siba_sprom *out, const uint16_t *in)
 {
 	int i;
@@ -1659,6 +1700,8 @@ siba_sprom_r45(struct siba_sprom *out, c
 		SIBA_SHIFTOUT(core_pwr_info[i].pa_5gh[2], o + SIBA_SPROM4_5GH_PA_2, ~0);
 		SIBA_SHIFTOUT(core_pwr_info[i].pa_5gh[3], o + SIBA_SPROM4_5GH_PA_3, ~0);
 	}
+
+	siba_sprom_r458(out, in);
 }
 
 static void
@@ -1700,6 +1743,7 @@ siba_sprom_r8(struct siba_sprom *out, co
 	SIBA_SHIFTOUT(tri5gh, SIBA_SPROM8_TRI5GHL, SIBA_SPROM8_TRI5GH);
 	SIBA_SHIFTOUT(rxpo2g, SIBA_SPROM8_RXPO, SIBA_SPROM8_RXPO2G);
 	SIBA_SHIFTOUT(rxpo5g, SIBA_SPROM8_RXPO, SIBA_SPROM8_RXPO5G);
+
 	SIBA_SHIFTOUT(rssismf2g, SIBA_SPROM8_RSSIPARM2G, SIBA_SPROM8_RSSISMF2G);
 	SIBA_SHIFTOUT(rssismc2g, SIBA_SPROM8_RSSIPARM2G, SIBA_SPROM8_RSSISMC2G);
 	SIBA_SHIFTOUT(rssisav2g, SIBA_SPROM8_RSSIPARM2G, SIBA_SPROM8_RSSISAV2G);
@@ -1789,6 +1833,8 @@ siba_sprom_r8(struct siba_sprom *out, co
 		SIBA_SHIFTOUT(core_pwr_info[i].pa_5gh[1], o + SIBA_SROM8_5GH_PA_1, ~0);
 		SIBA_SHIFTOUT(core_pwr_info[i].pa_5gh[2], o + SIBA_SROM8_5GH_PA_2, ~0);
 	}
+
+	siba_sprom_r458(out, in);
 }
 
 static int8_t
@@ -2468,6 +2514,54 @@ siba_read_sprom(device_t dev, device_t c
 	case SIBA_SPROMVAR_FEM_5GHZ_ANTSWLUT:
 		*result = siba->siba_sprom.fem.ghz5.antswlut;
 		break;
+	case SIBA_SPROMVAR_TXPID_2G_0:
+		*result = siba->siba_sprom.txpid2g[0];
+		break;
+	case SIBA_SPROMVAR_TXPID_2G_1:
+		*result = siba->siba_sprom.txpid2g[1];
+		break;
+	case SIBA_SPROMVAR_TXPID_2G_2:
+		*result = siba->siba_sprom.txpid2g[2];
+		break;
+	case SIBA_SPROMVAR_TXPID_2G_3:
+		*result = siba->siba_sprom.txpid2g[3];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GL_0:
+		*result = siba->siba_sprom.txpid5gl[0];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GL_1:
+		*result = siba->siba_sprom.txpid5gl[1];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GL_2:
+		*result = siba->siba_sprom.txpid5gl[2];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GL_3:
+		*result = siba->siba_sprom.txpid5gl[3];
+		break;
+	case SIBA_SPROMVAR_TXPID_5G_0:
+		*result = siba->siba_sprom.txpid5g[0];
+		break;
+	case SIBA_SPROMVAR_TXPID_5G_1:
+		*result = siba->siba_sprom.txpid5g[1];
+		break;
+	case SIBA_SPROMVAR_TXPID_5G_2:
+		*result = siba->siba_sprom.txpid5g[2];
+		break;
+	case SIBA_SPROMVAR_TXPID_5G_3:
+		*result = siba->siba_sprom.txpid5g[3];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GH_0:
+		*result = siba->siba_sprom.txpid5gh[0];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GH_1:
+		*result = siba->siba_sprom.txpid5gh[1];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GH_2:
+		*result = siba->siba_sprom.txpid5gh[2];
+		break;
+	case SIBA_SPROMVAR_TXPID_5GH_3:
+		*result = siba->siba_sprom.txpid5gh[3];
+		break;
 	default:
 		return (ENOENT);
 	}

Modified: head/sys/dev/siba/sibareg.h
==============================================================================
--- head/sys/dev/siba/sibareg.h	Thu May 12 15:48:08 2016	(r299537)
+++ head/sys/dev/siba/sibareg.h	Thu May 12 16:01:33 2016	(r299538)
@@ -360,6 +360,30 @@
 #define	SIBA_SPROM4_AGAIN23		0x1060
 #define	SIBA_SPROM4_AGAIN2		0x00ff
 #define	SIBA_SPROM4_AGAIN3		0xff00
+#define	SIBA_SPROM4_TXPID2G01		0x0062
+#define	 SIBA_SPROM4_TXPID2G0		0x00ff
+#define	 SIBA_SPROM4_TXPID2G1		0xff00
+#define	SIBA_SPROM4_TXPID2G23		0x0064
+#define	 SIBA_SPROM4_TXPID2G2		0x00ff
+#define	 SIBA_SPROM4_TXPID2G3		0xff00
+#define	SIBA_SPROM4_TXPID5G01		0x0066
+#define	 SIBA_SPROM4_TXPID5G0		0x00ff
+#define	 SIBA_SPROM4_TXPID5G1		0xff00
+#define	SIBA_SPROM4_TXPID5G23		0x0068
+#define	 SIBA_SPROM4_TXPID5G2		0x00ff
+#define	 SIBA_SPROM4_TXPID5G3		0xff00
+#define	SIBA_SPROM4_TXPID5GL01		0x006a
+#define	 SIBA_SPROM4_TXPID5GL0		0x00ff
+#define	 SIBA_SPROM4_TXPID5GL1		0xff00
+#define	SIBA_SPROM4_TXPID5GL23		0x006c
+#define	 SIBA_SPROM4_TXPID5GL2		0x00ff
+#define	 SIBA_SPROM4_TXPID5GL3		0xff00
+#define	SIBA_SPROM4_TXPID5GH01		0x006e
+#define	 SIBA_SPROM4_TXPID5GH0		0x00ff
+#define	 SIBA_SPROM4_TXPID5GH1		0xff00
+#define	SIBA_SPROM4_TXPID5GH23		0x0070
+#define	 SIBA_SPROM4_TXPID5GH2		0x00ff
+#define	 SIBA_SPROM4_TXPID5GH3		0xff00
 #define	SIBA_SPROM4_BFHIGH		0x1046
 #define	SIBA_SPROM4_MAXP_BG		0x1080
 #define	SIBA_SPROM4_MAXP_BG_MASK	0x00ff

Modified: head/sys/dev/siba/sibavar.h
==============================================================================
--- head/sys/dev/siba/sibavar.h	Thu May 12 15:48:08 2016	(r299537)
+++ head/sys/dev/siba/sibavar.h	Thu May 12 16:01:33 2016	(r299538)
@@ -289,6 +289,22 @@ enum siba_sprom_vars {
 	SIBA_SPROMVAR_FEM_5GHZ_PDET_RANGE,
 	SIBA_SPROMVAR_FEM_5GHZ_TR_ISO,
 	SIBA_SPROMVAR_FEM_5GHZ_ANTSWLUT,
+	SIBA_SPROMVAR_TXPID_2G_0,
+	SIBA_SPROMVAR_TXPID_2G_1,
+	SIBA_SPROMVAR_TXPID_2G_2,
+	SIBA_SPROMVAR_TXPID_2G_3,
+	SIBA_SPROMVAR_TXPID_5GL_0,
+	SIBA_SPROMVAR_TXPID_5GL_1,
+	SIBA_SPROMVAR_TXPID_5GL_2,
+	SIBA_SPROMVAR_TXPID_5GL_3,
+	SIBA_SPROMVAR_TXPID_5G_0,
+	SIBA_SPROMVAR_TXPID_5G_1,
+	SIBA_SPROMVAR_TXPID_5G_2,
+	SIBA_SPROMVAR_TXPID_5G_3,
+	SIBA_SPROMVAR_TXPID_5GH_0,
+	SIBA_SPROMVAR_TXPID_5GH_1,
+	SIBA_SPROMVAR_TXPID_5GH_2,
+	SIBA_SPROMVAR_TXPID_5GH_3,
 };
 
 int		siba_read_sprom(device_t, device_t, int, uintptr_t *);
@@ -386,6 +402,23 @@ SIBA_SPROM_ACCESSOR(fem_5ghz_extpa_gain,
 SIBA_SPROM_ACCESSOR(fem_5ghz_pdet_range, FEM_5GHZ_PDET_RANGE, uint8_t);
 SIBA_SPROM_ACCESSOR(fem_5ghz_tr_iso, FEM_5GHZ_TR_ISO, uint8_t);
 SIBA_SPROM_ACCESSOR(fem_5ghz_antswlut, FEM_5GHZ_ANTSWLUT, uint8_t);
+/* TX power index */
+SIBA_SPROM_ACCESSOR(txpid_2g_0, TXPID_2G_0, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_2g_1, TXPID_2G_1, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_2g_2, TXPID_2G_2, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_2g_3, TXPID_2G_3, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gl_0, TXPID_5GL_0, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gl_1, TXPID_5GL_1, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gl_2, TXPID_5GL_2, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gl_3, TXPID_5GL_3, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5g_0, TXPID_5G_0, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5g_1, TXPID_5G_1, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5g_2, TXPID_5G_2, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5g_3, TXPID_5G_3, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gh_0, TXPID_5GH_0, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gh_1, TXPID_5GH_1, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gh_2, TXPID_5GH_2, uint8_t);
+SIBA_SPROM_ACCESSOR(txpid_5gh_3, TXPID_5GH_3, uint8_t);
 
 #undef SIBA_SPROM_ACCESSOR
 
@@ -436,6 +469,10 @@ struct siba_sprom {
 	uint8_t			tri5gl;
 	uint8_t			tri5g;
 	uint8_t			tri5gh;
+	uint8_t			txpid2g[4];	/* 2GHz TX power index */
+	uint8_t			txpid5gl[4];	/* 4.9 - 5.1GHz TX power index */
+	uint8_t			txpid5g[4];	/* 5.1 - 5.5GHz TX power index */
+	uint8_t			txpid5gh[4];	/* 5.5 - 5.9GHz TX power index */
 	uint8_t			rssisav2g;
 	uint8_t			rssismc2g;
 	uint8_t			rssismf2g;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605121601.u4CG1YcQ061763>