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

Commit 67d392c0 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by John W. Linville
Browse files

ssb: make code for antenna gain extraction more generic

parent b3bbf842
Loading
Loading
Loading
Loading
+11 −9
Original line number Original line Diff line number Diff line
@@ -326,13 +326,13 @@ err_ctlreg:
	return err;
	return err;
}
}


static s8 r123_extract_antgain(u8 sprom_revision, const u16 *in,
static s8 sprom_extract_antgain(u8 sprom_revision, const u16 *in, u16 offset,
				u16 mask, u16 shift)
				u16 mask, u16 shift)
{
{
	u16 v;
	u16 v;
	u8 gain;
	u8 gain;


	v = in[SPOFF(SSB_SPROM1_AGAIN)];
	v = in[SPOFF(offset)];
	gain = (v & mask) >> shift;
	gain = (v & mask) >> shift;
	if (gain == 0xFF)
	if (gain == 0xFF)
		gain = 2; /* If unset use 2dBm */
		gain = 2; /* If unset use 2dBm */
@@ -416,10 +416,12 @@ static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in)
	SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0);
	SPEX(alpha2[1], SSB_SPROM1_CCODE, 0x00ff, 0);


	/* Extract the antenna gain values. */
	/* Extract the antenna gain values. */
	out->antenna_gain.a0 = r123_extract_antgain(out->revision, in,
	out->antenna_gain.a0 = sprom_extract_antgain(out->revision, in,
						     SSB_SPROM1_AGAIN,
						     SSB_SPROM1_AGAIN_BG,
						     SSB_SPROM1_AGAIN_BG,
						     SSB_SPROM1_AGAIN_BG_SHIFT);
						     SSB_SPROM1_AGAIN_BG_SHIFT);
	out->antenna_gain.a1 = r123_extract_antgain(out->revision, in,
	out->antenna_gain.a1 = sprom_extract_antgain(out->revision, in,
						     SSB_SPROM1_AGAIN,
						     SSB_SPROM1_AGAIN_A,
						     SSB_SPROM1_AGAIN_A,
						     SSB_SPROM1_AGAIN_A_SHIFT);
						     SSB_SPROM1_AGAIN_A_SHIFT);
	if (out->revision >= 2)
	if (out->revision >= 2)