From: "Michael Büsch" <mb@bu3sch.de>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: linux-wireless@vger.kernel.org,
"John W. Linville" <linville@tuxdriver.com>,
b43-dev@lists.infradead.org
Subject: [PATCH][RFC] ssb: extract indexes for power tables
Date: Sun, 28 Nov 2010 11:32:47 +0100 [thread overview]
Message-ID: <1290940367.15605.2.camel@maggie> (raw)
In-Reply-To: <1290937176-13510-1-git-send-email-zajec5@gmail.com> (sfid-20101128_044002_490248_457B5471)
On Sun, 2010-11-28 at 10:39 +0100, Rafa? Mi?ecki wrote:
> Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com>
> ---
> This patch adds a lot of similar definitions. Like masks and shifts being the
> same for every frequency. Is that OK?
Looks ok.
Acked-by: Michael Buesch <mb@bu3sch.de>
> ---
> drivers/ssb/pci.c | 44 ++++++++++++++++++++++++++++++++++++++++++
> include/linux/ssb/ssb.h | 4 +++
> include/linux/ssb/ssb_regs.h | 40 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 88 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
> index f529663..158449e 100644
> --- a/drivers/ssb/pci.c
> +++ b/drivers/ssb/pci.c
> @@ -406,6 +406,46 @@ static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in)
> out->antenna_gain.ghz5.a3 = gain;
> }
>
> +/* Revs 4 5 and 8 have partially shared layout */
> +static void sprom_extract_r458(struct ssb_sprom *out, const u16 *in)
> +{
> + SPEX(txpid2g[0], SSB_SPROM4_TXPID2G01,
> + SSB_SPROM4_TXPID2G0, SSB_SPROM4_TXPID2G0_SHIFT);
> + SPEX(txpid2g[1], SSB_SPROM4_TXPID2G01,
> + SSB_SPROM4_TXPID2G1, SSB_SPROM4_TXPID2G1_SHIFT);
> + SPEX(txpid2g[2], SSB_SPROM4_TXPID2G23,
> + SSB_SPROM4_TXPID2G2, SSB_SPROM4_TXPID2G2_SHIFT);
> + SPEX(txpid2g[3], SSB_SPROM4_TXPID2G23,
> + SSB_SPROM4_TXPID2G3, SSB_SPROM4_TXPID2G3_SHIFT);
> +
> + SPEX(txpid5gl[0], SSB_SPROM4_TXPID5GL01,
> + SSB_SPROM4_TXPID5GL0, SSB_SPROM4_TXPID5GL0_SHIFT);
> + SPEX(txpid5gl[1], SSB_SPROM4_TXPID5GL01,
> + SSB_SPROM4_TXPID5GL1, SSB_SPROM4_TXPID5GL1_SHIFT);
> + SPEX(txpid5gl[2], SSB_SPROM4_TXPID5GL23,
> + SSB_SPROM4_TXPID5GL2, SSB_SPROM4_TXPID5GL2_SHIFT);
> + SPEX(txpid5gl[3], SSB_SPROM4_TXPID5GL23,
> + SSB_SPROM4_TXPID5GL3, SSB_SPROM4_TXPID5GL3_SHIFT);
> +
> + SPEX(txpid5g[0], SSB_SPROM4_TXPID5G01,
> + SSB_SPROM4_TXPID5G0, SSB_SPROM4_TXPID5G0_SHIFT);
> + SPEX(txpid5g[1], SSB_SPROM4_TXPID5G01,
> + SSB_SPROM4_TXPID5G1, SSB_SPROM4_TXPID5G1_SHIFT);
> + SPEX(txpid5g[2], SSB_SPROM4_TXPID5G23,
> + SSB_SPROM4_TXPID5G2, SSB_SPROM4_TXPID5G2_SHIFT);
> + SPEX(txpid5g[3], SSB_SPROM4_TXPID5G23,
> + SSB_SPROM4_TXPID5G3, SSB_SPROM4_TXPID5G3_SHIFT);
> +
> + SPEX(txpid5gh[0], SSB_SPROM4_TXPID5GH01,
> + SSB_SPROM4_TXPID5GH0, SSB_SPROM4_TXPID5GH0_SHIFT);
> + SPEX(txpid5gh[1], SSB_SPROM4_TXPID5GH01,
> + SSB_SPROM4_TXPID5GH1, SSB_SPROM4_TXPID5GH1_SHIFT);
> + SPEX(txpid5gh[2], SSB_SPROM4_TXPID5GH23,
> + SSB_SPROM4_TXPID5GH2, SSB_SPROM4_TXPID5GH2_SHIFT);
> + SPEX(txpid5gh[3], SSB_SPROM4_TXPID5GH23,
> + SSB_SPROM4_TXPID5GH3, SSB_SPROM4_TXPID5GH3_SHIFT);
> +}
> +
> static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in)
> {
> int i;
> @@ -471,6 +511,8 @@ static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in)
> memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24,
> sizeof(out->antenna_gain.ghz5));
>
> + sprom_extract_r458(out, in);
> +
> /* TODO - get remaining rev 4 stuff needed */
> }
>
> @@ -561,6 +603,8 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in)
> memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24,
> sizeof(out->antenna_gain.ghz5));
>
> + sprom_extract_r458(out, in);
> +
> /* TODO - get remaining rev 8 stuff needed */
> }
>
> diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
> index 623b704..9659eff 100644
> --- a/include/linux/ssb/ssb.h
> +++ b/include/linux/ssb/ssb.h
> @@ -55,6 +55,10 @@ struct ssb_sprom {
> u8 tri5gl; /* 5.2GHz TX isolation */
> u8 tri5g; /* 5.3GHz TX isolation */
> u8 tri5gh; /* 5.8GHz TX isolation */
> + u8 txpid2g[4]; /* 2GHz TX power index */
> + u8 txpid5gl[4]; /* 4.9 - 5.1GHz TX power index */
> + u8 txpid5g[4]; /* 5.1 - 5.5GHz TX power index */
> + u8 txpid5gh[4]; /* 5.5 - ...GHz TX power index */
> u8 rxpo2g; /* 2GHz RX power offset */
> u8 rxpo5g; /* 5GHz RX power offset */
> u8 rssisav2g; /* 2GHz RSSI params */
> diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h
> index 11daf9c..489f7b6 100644
> --- a/include/linux/ssb/ssb_regs.h
> +++ b/include/linux/ssb/ssb_regs.h
> @@ -299,6 +299,46 @@
> #define SSB_SPROM4_AGAIN2_SHIFT 0
> #define SSB_SPROM4_AGAIN3 0xFF00 /* Antenna 3 */
> #define SSB_SPROM4_AGAIN3_SHIFT 8
> +#define SSB_SPROM4_TXPID2G01 0x0062 /* TX Power Index 2GHz */
> +#define SSB_SPROM4_TXPID2G0 0x00FF
> +#define SSB_SPROM4_TXPID2G0_SHIFT 0
> +#define SSB_SPROM4_TXPID2G1 0xFF00
> +#define SSB_SPROM4_TXPID2G1_SHIFT 8
> +#define SSB_SPROM4_TXPID2G23 0x0064 /* TX Power Index 2GHz */
> +#define SSB_SPROM4_TXPID2G2 0x00FF
> +#define SSB_SPROM4_TXPID2G2_SHIFT 0
> +#define SSB_SPROM4_TXPID2G3 0xFF00
> +#define SSB_SPROM4_TXPID2G3_SHIFT 8
> +#define SSB_SPROM4_TXPID5G01 0x0066 /* TX Power Index 5GHz middle subband */
> +#define SSB_SPROM4_TXPID5G0 0x00FF
> +#define SSB_SPROM4_TXPID5G0_SHIFT 0
> +#define SSB_SPROM4_TXPID5G1 0xFF00
> +#define SSB_SPROM4_TXPID5G1_SHIFT 8
> +#define SSB_SPROM4_TXPID5G23 0x0068 /* TX Power Index 5GHz middle subband */
> +#define SSB_SPROM4_TXPID5G2 0x00FF
> +#define SSB_SPROM4_TXPID5G2_SHIFT 0
> +#define SSB_SPROM4_TXPID5G3 0xFF00
> +#define SSB_SPROM4_TXPID5G3_SHIFT 8
> +#define SSB_SPROM4_TXPID5GL01 0x006A /* TX Power Index 5GHz low subband */
> +#define SSB_SPROM4_TXPID5GL0 0x00FF
> +#define SSB_SPROM4_TXPID5GL0_SHIFT 0
> +#define SSB_SPROM4_TXPID5GL1 0xFF00
> +#define SSB_SPROM4_TXPID5GL1_SHIFT 8
> +#define SSB_SPROM4_TXPID5GL23 0x006C /* TX Power Index 5GHz low subband */
> +#define SSB_SPROM4_TXPID5GL2 0x00FF
> +#define SSB_SPROM4_TXPID5GL2_SHIFT 0
> +#define SSB_SPROM4_TXPID5GL3 0xFF00
> +#define SSB_SPROM4_TXPID5GL3_SHIFT 8
> +#define SSB_SPROM4_TXPID5GH01 0x006E /* TX Power Index 5GHz high subband */
> +#define SSB_SPROM4_TXPID5GH0 0x00FF
> +#define SSB_SPROM4_TXPID5GH0_SHIFT 0
> +#define SSB_SPROM4_TXPID5GH1 0xFF00
> +#define SSB_SPROM4_TXPID5GH1_SHIFT 8
> +#define SSB_SPROM4_TXPID5GH23 0x0070 /* TX Power Index 5GHz high subband */
> +#define SSB_SPROM4_TXPID5GH2 0x00FF
> +#define SSB_SPROM4_TXPID5GH2_SHIFT 0
> +#define SSB_SPROM4_TXPID5GH3 0xFF00
> +#define SSB_SPROM4_TXPID5GH3_SHIFT 8
> #define SSB_SPROM4_MAXP_BG 0x0080 /* Max Power BG in path 1 */
> #define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */
> #define SSB_SPROM4_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */
--
Greetings Michael.
WARNING: multiple messages have this Message-ID (diff)
From: "Michael Büsch" <mb@bu3sch.de>
To: "Rafał Miłecki" <zajec5@gmail.com>
Cc: linux-wireless@vger.kernel.org,
"John W. Linville" <linville@tuxdriver.com>,
b43-dev@lists.infradead.org
Subject: Re: [PATCH][RFC] ssb: extract indexes for power tables
Date: Sun, 28 Nov 2010 11:32:47 +0100 [thread overview]
Message-ID: <1290940367.15605.2.camel@maggie> (raw)
In-Reply-To: <1290937176-13510-1-git-send-email-zajec5@gmail.com> (sfid-20101128_044002_490248_457B5471)
On Sun, 2010-11-28 at 10:39 +0100, Rafał Miłecki wrote:
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
> This patch adds a lot of similar definitions. Like masks and shifts being the
> same for every frequency. Is that OK?
Looks ok.
Acked-by: Michael Buesch <mb@bu3sch.de>
> ---
> drivers/ssb/pci.c | 44 ++++++++++++++++++++++++++++++++++++++++++
> include/linux/ssb/ssb.h | 4 +++
> include/linux/ssb/ssb_regs.h | 40 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 88 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
> index f529663..158449e 100644
> --- a/drivers/ssb/pci.c
> +++ b/drivers/ssb/pci.c
> @@ -406,6 +406,46 @@ static void sprom_extract_r123(struct ssb_sprom *out, const u16 *in)
> out->antenna_gain.ghz5.a3 = gain;
> }
>
> +/* Revs 4 5 and 8 have partially shared layout */
> +static void sprom_extract_r458(struct ssb_sprom *out, const u16 *in)
> +{
> + SPEX(txpid2g[0], SSB_SPROM4_TXPID2G01,
> + SSB_SPROM4_TXPID2G0, SSB_SPROM4_TXPID2G0_SHIFT);
> + SPEX(txpid2g[1], SSB_SPROM4_TXPID2G01,
> + SSB_SPROM4_TXPID2G1, SSB_SPROM4_TXPID2G1_SHIFT);
> + SPEX(txpid2g[2], SSB_SPROM4_TXPID2G23,
> + SSB_SPROM4_TXPID2G2, SSB_SPROM4_TXPID2G2_SHIFT);
> + SPEX(txpid2g[3], SSB_SPROM4_TXPID2G23,
> + SSB_SPROM4_TXPID2G3, SSB_SPROM4_TXPID2G3_SHIFT);
> +
> + SPEX(txpid5gl[0], SSB_SPROM4_TXPID5GL01,
> + SSB_SPROM4_TXPID5GL0, SSB_SPROM4_TXPID5GL0_SHIFT);
> + SPEX(txpid5gl[1], SSB_SPROM4_TXPID5GL01,
> + SSB_SPROM4_TXPID5GL1, SSB_SPROM4_TXPID5GL1_SHIFT);
> + SPEX(txpid5gl[2], SSB_SPROM4_TXPID5GL23,
> + SSB_SPROM4_TXPID5GL2, SSB_SPROM4_TXPID5GL2_SHIFT);
> + SPEX(txpid5gl[3], SSB_SPROM4_TXPID5GL23,
> + SSB_SPROM4_TXPID5GL3, SSB_SPROM4_TXPID5GL3_SHIFT);
> +
> + SPEX(txpid5g[0], SSB_SPROM4_TXPID5G01,
> + SSB_SPROM4_TXPID5G0, SSB_SPROM4_TXPID5G0_SHIFT);
> + SPEX(txpid5g[1], SSB_SPROM4_TXPID5G01,
> + SSB_SPROM4_TXPID5G1, SSB_SPROM4_TXPID5G1_SHIFT);
> + SPEX(txpid5g[2], SSB_SPROM4_TXPID5G23,
> + SSB_SPROM4_TXPID5G2, SSB_SPROM4_TXPID5G2_SHIFT);
> + SPEX(txpid5g[3], SSB_SPROM4_TXPID5G23,
> + SSB_SPROM4_TXPID5G3, SSB_SPROM4_TXPID5G3_SHIFT);
> +
> + SPEX(txpid5gh[0], SSB_SPROM4_TXPID5GH01,
> + SSB_SPROM4_TXPID5GH0, SSB_SPROM4_TXPID5GH0_SHIFT);
> + SPEX(txpid5gh[1], SSB_SPROM4_TXPID5GH01,
> + SSB_SPROM4_TXPID5GH1, SSB_SPROM4_TXPID5GH1_SHIFT);
> + SPEX(txpid5gh[2], SSB_SPROM4_TXPID5GH23,
> + SSB_SPROM4_TXPID5GH2, SSB_SPROM4_TXPID5GH2_SHIFT);
> + SPEX(txpid5gh[3], SSB_SPROM4_TXPID5GH23,
> + SSB_SPROM4_TXPID5GH3, SSB_SPROM4_TXPID5GH3_SHIFT);
> +}
> +
> static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in)
> {
> int i;
> @@ -471,6 +511,8 @@ static void sprom_extract_r45(struct ssb_sprom *out, const u16 *in)
> memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24,
> sizeof(out->antenna_gain.ghz5));
>
> + sprom_extract_r458(out, in);
> +
> /* TODO - get remaining rev 4 stuff needed */
> }
>
> @@ -561,6 +603,8 @@ static void sprom_extract_r8(struct ssb_sprom *out, const u16 *in)
> memcpy(&out->antenna_gain.ghz5, &out->antenna_gain.ghz24,
> sizeof(out->antenna_gain.ghz5));
>
> + sprom_extract_r458(out, in);
> +
> /* TODO - get remaining rev 8 stuff needed */
> }
>
> diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
> index 623b704..9659eff 100644
> --- a/include/linux/ssb/ssb.h
> +++ b/include/linux/ssb/ssb.h
> @@ -55,6 +55,10 @@ struct ssb_sprom {
> u8 tri5gl; /* 5.2GHz TX isolation */
> u8 tri5g; /* 5.3GHz TX isolation */
> u8 tri5gh; /* 5.8GHz TX isolation */
> + u8 txpid2g[4]; /* 2GHz TX power index */
> + u8 txpid5gl[4]; /* 4.9 - 5.1GHz TX power index */
> + u8 txpid5g[4]; /* 5.1 - 5.5GHz TX power index */
> + u8 txpid5gh[4]; /* 5.5 - ...GHz TX power index */
> u8 rxpo2g; /* 2GHz RX power offset */
> u8 rxpo5g; /* 5GHz RX power offset */
> u8 rssisav2g; /* 2GHz RSSI params */
> diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h
> index 11daf9c..489f7b6 100644
> --- a/include/linux/ssb/ssb_regs.h
> +++ b/include/linux/ssb/ssb_regs.h
> @@ -299,6 +299,46 @@
> #define SSB_SPROM4_AGAIN2_SHIFT 0
> #define SSB_SPROM4_AGAIN3 0xFF00 /* Antenna 3 */
> #define SSB_SPROM4_AGAIN3_SHIFT 8
> +#define SSB_SPROM4_TXPID2G01 0x0062 /* TX Power Index 2GHz */
> +#define SSB_SPROM4_TXPID2G0 0x00FF
> +#define SSB_SPROM4_TXPID2G0_SHIFT 0
> +#define SSB_SPROM4_TXPID2G1 0xFF00
> +#define SSB_SPROM4_TXPID2G1_SHIFT 8
> +#define SSB_SPROM4_TXPID2G23 0x0064 /* TX Power Index 2GHz */
> +#define SSB_SPROM4_TXPID2G2 0x00FF
> +#define SSB_SPROM4_TXPID2G2_SHIFT 0
> +#define SSB_SPROM4_TXPID2G3 0xFF00
> +#define SSB_SPROM4_TXPID2G3_SHIFT 8
> +#define SSB_SPROM4_TXPID5G01 0x0066 /* TX Power Index 5GHz middle subband */
> +#define SSB_SPROM4_TXPID5G0 0x00FF
> +#define SSB_SPROM4_TXPID5G0_SHIFT 0
> +#define SSB_SPROM4_TXPID5G1 0xFF00
> +#define SSB_SPROM4_TXPID5G1_SHIFT 8
> +#define SSB_SPROM4_TXPID5G23 0x0068 /* TX Power Index 5GHz middle subband */
> +#define SSB_SPROM4_TXPID5G2 0x00FF
> +#define SSB_SPROM4_TXPID5G2_SHIFT 0
> +#define SSB_SPROM4_TXPID5G3 0xFF00
> +#define SSB_SPROM4_TXPID5G3_SHIFT 8
> +#define SSB_SPROM4_TXPID5GL01 0x006A /* TX Power Index 5GHz low subband */
> +#define SSB_SPROM4_TXPID5GL0 0x00FF
> +#define SSB_SPROM4_TXPID5GL0_SHIFT 0
> +#define SSB_SPROM4_TXPID5GL1 0xFF00
> +#define SSB_SPROM4_TXPID5GL1_SHIFT 8
> +#define SSB_SPROM4_TXPID5GL23 0x006C /* TX Power Index 5GHz low subband */
> +#define SSB_SPROM4_TXPID5GL2 0x00FF
> +#define SSB_SPROM4_TXPID5GL2_SHIFT 0
> +#define SSB_SPROM4_TXPID5GL3 0xFF00
> +#define SSB_SPROM4_TXPID5GL3_SHIFT 8
> +#define SSB_SPROM4_TXPID5GH01 0x006E /* TX Power Index 5GHz high subband */
> +#define SSB_SPROM4_TXPID5GH0 0x00FF
> +#define SSB_SPROM4_TXPID5GH0_SHIFT 0
> +#define SSB_SPROM4_TXPID5GH1 0xFF00
> +#define SSB_SPROM4_TXPID5GH1_SHIFT 8
> +#define SSB_SPROM4_TXPID5GH23 0x0070 /* TX Power Index 5GHz high subband */
> +#define SSB_SPROM4_TXPID5GH2 0x00FF
> +#define SSB_SPROM4_TXPID5GH2_SHIFT 0
> +#define SSB_SPROM4_TXPID5GH3 0xFF00
> +#define SSB_SPROM4_TXPID5GH3_SHIFT 8
> #define SSB_SPROM4_MAXP_BG 0x0080 /* Max Power BG in path 1 */
> #define SSB_SPROM4_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */
> #define SSB_SPROM4_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */
--
Greetings Michael.
next prev parent reply other threads:[~2010-11-28 10:32 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-28 9:39 [PATCH][RFC] ssb: extract indexes for power tables Rafał Miłecki
2010-11-28 9:39 ` Rafał Miłecki
2010-11-28 10:32 ` Michael Büsch [this message]
2010-11-28 10:32 ` Michael Büsch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1290940367.15605.2.camel@maggie \
--to=mb@bu3sch.de \
--cc=b43-dev@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=zajec5@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.