2007-10-27 23:20:35

by Nick Kossifidis

[permalink] [raw]
Subject: [PATCH 4/7] ath5k: Add SREV values for newer chips

* Add new Silicon Revision values (hex values written on chip) to be able to identify them.

* Give more infos about mac/phy/radio revision during attach.

Changes-licensed-under: 3-clause-BSD
Signed-Off-by: Nick Kossifidis <[email protected]>

---
diff --git a/drivers/net/wireless/ath5k/ath5k.h b/drivers/net/wireless/ath5k/ath5k.h
index 795d7dd..fa9f3ae 100644
--- a/drivers/net/wireless/ath5k/ath5k.h
+++ b/drivers/net/wireless/ath5k/ath5k.h
@@ -126,6 +126,18 @@ enum ath5k_radio {
/*
* Common silicon revision/version values
*/
+
+enum ath5k_srev_type {
+ AR5K_VERSION_VER,
+ AR5K_VERSION_RAD,
+};
+
+struct ath5k_srev_name {
+ const char *sr_name;
+ enum ath5k_srev_type sr_type;
+ u_int sr_val;
+};
+
#define AR5K_SREV_UNKNOWN 0xffff

#define AR5K_SREV_VER_AR5210 0x00
@@ -135,7 +147,13 @@ enum ath5k_radio {
#define AR5K_SREV_VER_AR5211 0x40
#define AR5K_SREV_VER_AR5212 0x50
#define AR5K_SREV_VER_AR5213 0x55
-#define AR5K_SREV_VER_UNSUPP 0x60
+#define AR5K_SREV_VER_AR5213A 0x59
+#define AR5K_SREV_VER_AR2424 0xa0
+#define AR5K_SREV_VER_AR5424 0xa3
+#define AR5K_SREV_VER_AR5413 0xa4
+#define AR5K_SREV_VER_AR5414 0xa5
+#define AR5K_SREV_VER_AR5416 0xc0 /* ? */
+#define AR5K_SREV_VER_AR5418 0xca

#define AR5K_SREV_RAD_5110 0x00
#define AR5K_SREV_RAD_5111 0x10
@@ -145,7 +163,9 @@ enum ath5k_radio {
#define AR5K_SREV_RAD_5112A 0x35
#define AR5K_SREV_RAD_2112 0x40
#define AR5K_SREV_RAD_2112A 0x45
-#define AR5K_SREV_RAD_UNSUPP 0x50
+#define AR5K_SREV_RAD_SC1 0x63 /* Found on 5413/5414 */
+#define AR5K_SREV_RAD_SC2 0xa2 /* Found on 2424/5424 */
+#define AR5K_SREV_RAD_5133 0xc0 /* MIMO found on 5418 */

/* IEEE defs */

diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index 382bb23..821ed44 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -201,6 +201,35 @@ static struct pci_device_id ath5k_pci_id_table[] __devinitdata = {
};
MODULE_DEVICE_TABLE(pci, ath5k_pci_id_table);

+/* Known SREVs */
+static struct ath5k_srev_name srev_names[] = {
+ { "5210", AR5K_VERSION_VER, AR5K_SREV_VER_AR5210 },
+ { "5311", AR5K_VERSION_VER, AR5K_SREV_VER_AR5311 },
+ { "5311A", AR5K_VERSION_VER, AR5K_SREV_VER_AR5311A },
+ { "5311B", AR5K_VERSION_VER, AR5K_SREV_VER_AR5311B },
+ { "5211", AR5K_VERSION_VER, AR5K_SREV_VER_AR5211 },
+ { "5212", AR5K_VERSION_VER, AR5K_SREV_VER_AR5212 },
+ { "5213", AR5K_VERSION_VER, AR5K_SREV_VER_AR5213 },
+ { "5213A", AR5K_VERSION_VER, AR5K_SREV_VER_AR5213A },
+ { "2424", AR5K_VERSION_VER, AR5K_SREV_VER_AR2424 },
+ { "5424", AR5K_VERSION_VER, AR5K_SREV_VER_AR5424 },
+ { "5413", AR5K_VERSION_VER, AR5K_SREV_VER_AR5413 },
+ { "5414", AR5K_VERSION_VER, AR5K_SREV_VER_AR5414 },
+ { "5416", AR5K_VERSION_VER, AR5K_SREV_VER_AR5416 },
+ { "5418", AR5K_VERSION_VER, AR5K_SREV_VER_AR5418 },
+ { "xxxxx", AR5K_VERSION_VER, AR5K_SREV_UNKNOWN },
+ { "5110", AR5K_VERSION_RAD, AR5K_SREV_RAD_5110 },
+ { "5111", AR5K_VERSION_RAD, AR5K_SREV_RAD_5111 },
+ { "2111", AR5K_VERSION_RAD, AR5K_SREV_RAD_2111 },
+ { "5112", AR5K_VERSION_RAD, AR5K_SREV_RAD_5112 },
+ { "5112A", AR5K_VERSION_RAD, AR5K_SREV_RAD_5112A },
+ { "2112", AR5K_VERSION_RAD, AR5K_SREV_RAD_2112 },
+ { "2112A", AR5K_VERSION_RAD, AR5K_SREV_RAD_2112A },
+ { "SChip", AR5K_VERSION_RAD, AR5K_SREV_RAD_SC1 },
+ { "SChip", AR5K_VERSION_RAD, AR5K_SREV_RAD_SC2 },
+ { "5133", AR5K_VERSION_RAD, AR5K_SREV_RAD_5133 },
+ { "xxxxx", AR5K_VERSION_RAD, AR5K_SREV_UNKNOWN },
+};

/*
* Prototypes - PCI stack related functions
@@ -392,17 +421,21 @@ module_exit(exit_ath5k_pci);
\********************/

static const char *
-ath5k_chip_name(u8 mac_version)
+ath5k_chip_name(enum ath5k_srev_type type, u_int16_t val)
{
- switch (mac_version) {
- case AR5K_AR5210:
- return "AR5210";
- case AR5K_AR5211:
- return "AR5211";
- case AR5K_AR5212:
- return "AR5212";
+ const char *name = "xxxxx";
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(srev_names); i++) {
+ if (srev_names[i].sr_type != type)
+ continue;
+ if ((val & 0xff) < srev_names[i + 1].sr_val) {
+ name = srev_names[i].sr_name;
+ break;
+ }
}
- return "Unknown";
+
+ return name;
}

static int __devinit
@@ -535,10 +568,24 @@ ath5k_pci_probe(struct pci_dev *pdev,
if (ret)
goto err_ah;

- dev_info(&pdev->dev, "%s chip found: mac %d.%d phy %d.%d\n",
- ath5k_chip_name(id->driver_data), sc->ah->ah_mac_version,
- sc->ah->ah_mac_revision, sc->ah->ah_phy_revision >> 4,
- sc->ah->ah_phy_revision & 0xf);
+ dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
+ ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
+ sc->ah->ah_mac_srev,
+ sc->ah->ah_phy_revision);
+
+ if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
+ dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
+ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
+ sc->ah->ah_radio_5ghz_revision);
+ } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
+ dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
+ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
+ sc->ah->ah_radio_5ghz_revision);
+ dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
+ ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
+ sc->ah->ah_radio_2ghz_revision);
+ }
+

/* ready to process interrupts */
__clear_bit(ATH_STAT_INVALID, sc->status);




2007-10-31 18:55:47

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [ath5k-devel] [PATCH 4/7] ath5k: Add SREV values for newer chips

2007/10/31, Luis R. Rodriguez <[email protected]>:
> On 10/27/07, Nick Kossifidis <[email protected]> wrote:
>
> > * Give more infos about mac/phy/radio revision during attach.
>
> > @@ -535,10 +568,24 @@ ath5k_pci_probe(struct pci_dev *pdev,
> > if (ret)
> > goto err_ah;
> >
> > - dev_info(&pdev->dev, "%s chip found: mac %d.%d phy %d.%d\n",
> > - ath5k_chip_name(id->driver_data), sc->ah->ah_mac_version,
> > - sc->ah->ah_mac_revision, sc->ah->ah_phy_revision >> 4,
> > - sc->ah->ah_phy_revision & 0xf);
> > + dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
> > + ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
> > + sc->ah->ah_mac_srev,
> > + sc->ah->ah_phy_revision);
> > +
> > + if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
> > + dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
> > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > + sc->ah->ah_radio_5ghz_revision);
> > + } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
> > + dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
> > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > + sc->ah->ah_radio_5ghz_revision);
> > + dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
> > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
> > + sc->ah->ah_radio_2ghz_revision);
> > + }
> > +
> >
> > /* ready to process interrupts */
> > __clear_bit(ATH_STAT_INVALID, sc->status);
> >
>
> I have ACK'd this as I believe its a lot more useful information than
> what we had before but I am confused by what some different prints may
> yield. For example, on AR5213, I get:
>
> ath5k_pci 0001:11:02.0: Atheros AR5213 chip found: MAC 0x56, PHY: 0x41
> ath5k_pci 0001:11:02.0: RF5111 5GHz radio found (0x17)
> ath5k_pci 0001:11:02.0: RF2111 2GHz radio found (0x23)
>
> On my Cardbus card, I then get:
>
> ath5k_pci 0000:15:00.0: Atheros AR5213A chip found: MAC 0x59, PHY: 0x43
> ath5k_pci 0000:15:00.0: RF5112A radio found (0x36)
>
> Now, both are capable of 2 GHz and 5 GHz though and only one prints a
> line which shows the type of RF both for 2 GHz and 5 GHz. Essentially
> my ah_radio_2ghz_revision is 0x00 for that card. What exactly does
> having a print for both RFs here indicate besides the fact we are
> indicating the type of radio and revision? And in the Cardbus card I
> have where only one RF line is printed what does that indicate?
>
> Luis

RF5111 is only 5GHz capable without 2111, 2111 is only 2GHz capable
(it's actually an extension to 5111), on the other hand 5112 is
multiband, that's why we don't say it's type. On single chip solutions
both revisions are 0 so no RF chip msg is displayed.

We have to handle this better for b/g only cards but i didn't have
such cards to test so i'll try it later (first we have to see what's
going on and they don't work).

--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2007-10-31 19:39:13

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [ath5k-devel] [PATCH 4/7] ath5k: Add SREV values for newer chips

2007/10/31, Luis R. Rodriguez <[email protected]>:
> On 10/31/07, Nick Kossifidis <[email protected]> wrote:
> > 2007/10/31, Luis R. Rodriguez <[email protected]>:
> > > On 10/27/07, Nick Kossifidis <[email protected]> wrote:
> > >
> > > > * Give more infos about mac/phy/radio revision during attach.
> > >
> > > > @@ -535,10 +568,24 @@ ath5k_pci_probe(struct pci_dev *pdev,
> > > > if (ret)
> > > > goto err_ah;
> > > >
> > > > - dev_info(&pdev->dev, "%s chip found: mac %d.%d phy %d.%d\n",
> > > > - ath5k_chip_name(id->driver_data), sc->ah->ah_mac_version,
> > > > - sc->ah->ah_mac_revision, sc->ah->ah_phy_revision >> 4,
> > > > - sc->ah->ah_phy_revision & 0xf);
> > > > + dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
> > > > + ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
> > > > + sc->ah->ah_mac_srev,
> > > > + sc->ah->ah_phy_revision);
> > > > +
> > > > + if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
> > > > + dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
> > > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > > + sc->ah->ah_radio_5ghz_revision);
> > > > + } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
> > > > + dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
> > > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > > + sc->ah->ah_radio_5ghz_revision);
> > > > + dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
> > > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
> > > > + sc->ah->ah_radio_2ghz_revision);
> > > > + }
> > > > +
> > > >
> > > > /* ready to process interrupts */
> > > > __clear_bit(ATH_STAT_INVALID, sc->status);
> > > >
> > >
> > > I have ACK'd this as I believe its a lot more useful information than
> > > what we had before but I am confused by what some different prints may
> > > yield. For example, on AR5213, I get:
> > >
> > > ath5k_pci 0001:11:02.0: Atheros AR5213 chip found: MAC 0x56, PHY: 0x41
> > > ath5k_pci 0001:11:02.0: RF5111 5GHz radio found (0x17)
> > > ath5k_pci 0001:11:02.0: RF2111 2GHz radio found (0x23)
> > >
> > > On my Cardbus card, I then get:
> > >
> > > ath5k_pci 0000:15:00.0: Atheros AR5213A chip found: MAC 0x59, PHY: 0x43
> > > ath5k_pci 0000:15:00.0: RF5112A radio found (0x36)
> > >
> > > Now, both are capable of 2 GHz and 5 GHz though and only one prints a
> > > line which shows the type of RF both for 2 GHz and 5 GHz. Essentially
> > > my ah_radio_2ghz_revision is 0x00 for that card. What exactly does
> > > having a print for both RFs here indicate besides the fact we are
> > > indicating the type of radio and revision? And in the Cardbus card I
> > > have where only one RF line is printed what does that indicate?
> > >
> > > Luis
> >
> > RF5111 is only 5GHz capable without 2111, 2111 is only 2GHz capable
> > (it's actually an extension to 5111), on the other hand 5112 is
> > multiband, that's why we don't say it's type.
>
> Can add in the message that its RF is multiband then (2GHz/5GHz note will work)?
>
> > On single chip solutions
> > both revisions are 0 so no RF chip msg is displayed.
>
> Hm.. interesting.. we probably should inform the band the RF is
> capable of then at least. What do you think?
>

Note: We set them to zero (check out attach) to make things easier.
I believe that for single chips we should check capability bits and
for b/g only report 2GHz, for a only report 5Ghz and for both report
multband or nothing.

> > We have to handle this better for b/g only cards but i didn't have
> > such cards to test so i'll try it later (first we have to see what's
> > going on and they don't work).
>
> You have one now?
>
> Luis
>

Nope but i believe that regdumps from them should give us something...


--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2007-10-31 19:14:07

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [ath5k-devel] [PATCH 4/7] ath5k: Add SREV values for newer chips

On 10/31/07, Nick Kossifidis <[email protected]> wrote:
> 2007/10/31, Luis R. Rodriguez <[email protected]>:
> > On 10/27/07, Nick Kossifidis <[email protected]> wrote:
> >
> > > * Give more infos about mac/phy/radio revision during attach.
> >
> > > @@ -535,10 +568,24 @@ ath5k_pci_probe(struct pci_dev *pdev,
> > > if (ret)
> > > goto err_ah;
> > >
> > > - dev_info(&pdev->dev, "%s chip found: mac %d.%d phy %d.%d\n",
> > > - ath5k_chip_name(id->driver_data), sc->ah->ah_mac_version,
> > > - sc->ah->ah_mac_revision, sc->ah->ah_phy_revision >> 4,
> > > - sc->ah->ah_phy_revision & 0xf);
> > > + dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
> > > + ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
> > > + sc->ah->ah_mac_srev,
> > > + sc->ah->ah_phy_revision);
> > > +
> > > + if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
> > > + dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
> > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > + sc->ah->ah_radio_5ghz_revision);
> > > + } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
> > > + dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
> > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > + sc->ah->ah_radio_5ghz_revision);
> > > + dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
> > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
> > > + sc->ah->ah_radio_2ghz_revision);
> > > + }
> > > +
> > >
> > > /* ready to process interrupts */
> > > __clear_bit(ATH_STAT_INVALID, sc->status);
> > >
> >
> > I have ACK'd this as I believe its a lot more useful information than
> > what we had before but I am confused by what some different prints may
> > yield. For example, on AR5213, I get:
> >
> > ath5k_pci 0001:11:02.0: Atheros AR5213 chip found: MAC 0x56, PHY: 0x41
> > ath5k_pci 0001:11:02.0: RF5111 5GHz radio found (0x17)
> > ath5k_pci 0001:11:02.0: RF2111 2GHz radio found (0x23)
> >
> > On my Cardbus card, I then get:
> >
> > ath5k_pci 0000:15:00.0: Atheros AR5213A chip found: MAC 0x59, PHY: 0x43
> > ath5k_pci 0000:15:00.0: RF5112A radio found (0x36)
> >
> > Now, both are capable of 2 GHz and 5 GHz though and only one prints a
> > line which shows the type of RF both for 2 GHz and 5 GHz. Essentially
> > my ah_radio_2ghz_revision is 0x00 for that card. What exactly does
> > having a print for both RFs here indicate besides the fact we are
> > indicating the type of radio and revision? And in the Cardbus card I
> > have where only one RF line is printed what does that indicate?
> >
> > Luis
>
> RF5111 is only 5GHz capable without 2111, 2111 is only 2GHz capable
> (it's actually an extension to 5111), on the other hand 5112 is
> multiband, that's why we don't say it's type.

Can add in the message that its RF is multiband then (2GHz/5GHz note will work)?

> On single chip solutions
> both revisions are 0 so no RF chip msg is displayed.

Hm.. interesting.. we probably should inform the band the RF is
capable of then at least. What do you think?

> We have to handle this better for b/g only cards but i didn't have
> such cards to test so i'll try it later (first we have to see what's
> going on and they don't work).

You have one now?

Luis

2007-10-31 18:10:44

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 4/7] ath5k: Add SREV values for newer chips

On 10/27/07, Nick Kossifidis <[email protected]> wrote:

> * Give more infos about mac/phy/radio revision during attach.

> @@ -535,10 +568,24 @@ ath5k_pci_probe(struct pci_dev *pdev,
> if (ret)
> goto err_ah;
>
> - dev_info(&pdev->dev, "%s chip found: mac %d.%d phy %d.%d\n",
> - ath5k_chip_name(id->driver_data), sc->ah->ah_mac_version,
> - sc->ah->ah_mac_revision, sc->ah->ah_phy_revision >> 4,
> - sc->ah->ah_phy_revision & 0xf);
> + dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
> + ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
> + sc->ah->ah_mac_srev,
> + sc->ah->ah_phy_revision);
> +
> + if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
> + dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
> + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> + sc->ah->ah_radio_5ghz_revision);
> + } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
> + dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
> + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> + sc->ah->ah_radio_5ghz_revision);
> + dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
> + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
> + sc->ah->ah_radio_2ghz_revision);
> + }
> +
>
> /* ready to process interrupts */
> __clear_bit(ATH_STAT_INVALID, sc->status);
>

I have ACK'd this as I believe its a lot more useful information than
what we had before but I am confused by what some different prints may
yield. For example, on AR5213, I get:

ath5k_pci 0001:11:02.0: Atheros AR5213 chip found: MAC 0x56, PHY: 0x41
ath5k_pci 0001:11:02.0: RF5111 5GHz radio found (0x17)
ath5k_pci 0001:11:02.0: RF2111 2GHz radio found (0x23)

On my Cardbus card, I then get:

ath5k_pci 0000:15:00.0: Atheros AR5213A chip found: MAC 0x59, PHY: 0x43
ath5k_pci 0000:15:00.0: RF5112A radio found (0x36)

Now, both are capable of 2 GHz and 5 GHz though and only one prints a
line which shows the type of RF both for 2 GHz and 5 GHz. Essentially
my ah_radio_2ghz_revision is 0x00 for that card. What exactly does
having a print for both RFs here indicate besides the fact we are
indicating the type of radio and revision? And in the Cardbus card I
have where only one RF line is printed what does that indicate?

Luis

2007-10-28 11:44:19

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [ath5k-devel] [PATCH 4/7] ath5k: Add SREV values for newer chips

forgot to mention

for ath5k.h
Changes-licensed-under: ISC


--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2007-10-31 20:22:36

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [ath5k-devel] [PATCH 4/7] ath5k: Add SREV values for newer chips

On 10/31/07, Nick Kossifidis <[email protected]> wrote:
> 2007/10/31, Luis R. Rodriguez <[email protected]>:
> > On 10/31/07, Nick Kossifidis <[email protected]> wrote:
> > > 2007/10/31, Luis R. Rodriguez <[email protected]>:
> > > > On 10/27/07, Nick Kossifidis <[email protected]> wrote:
> > > >
> > > > > * Give more infos about mac/phy/radio revision during attach.
> > > >
> > > > > @@ -535,10 +568,24 @@ ath5k_pci_probe(struct pci_dev *pdev,
> > > > > if (ret)
> > > > > goto err_ah;
> > > > >
> > > > > - dev_info(&pdev->dev, "%s chip found: mac %d.%d phy %d.%d\n",
> > > > > - ath5k_chip_name(id->driver_data), sc->ah->ah_mac_version,
> > > > > - sc->ah->ah_mac_revision, sc->ah->ah_phy_revision >> 4,
> > > > > - sc->ah->ah_phy_revision & 0xf);
> > > > > + dev_info(&pdev->dev, "Atheros AR%s chip found: MAC 0x%x, PHY: 0x%x\n",
> > > > > + ath5k_chip_name(AR5K_VERSION_VER,sc->ah->ah_mac_srev),
> > > > > + sc->ah->ah_mac_srev,
> > > > > + sc->ah->ah_phy_revision);
> > > > > +
> > > > > + if(sc->ah->ah_radio_5ghz_revision && !sc->ah->ah_radio_2ghz_revision){
> > > > > + dev_info(&pdev->dev, "RF%s radio found (0x%x)\n",
> > > > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > > > + sc->ah->ah_radio_5ghz_revision);
> > > > > + } else if(sc->ah->ah_radio_5ghz_revision && sc->ah->ah_radio_2ghz_revision){
> > > > > + dev_info(&pdev->dev, "RF%s 5GHz radio found (0x%x)\n",
> > > > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_5ghz_revision),
> > > > > + sc->ah->ah_radio_5ghz_revision);
> > > > > + dev_info(&pdev->dev, "RF%s 2GHz radio found (0x%x)\n",
> > > > > + ath5k_chip_name(AR5K_VERSION_RAD,sc->ah->ah_radio_2ghz_revision),
> > > > > + sc->ah->ah_radio_2ghz_revision);
> > > > > + }
> > > > > +
> > > > >
> > > > > /* ready to process interrupts */
> > > > > __clear_bit(ATH_STAT_INVALID, sc->status);
> > > > >
> > > >
> > > > I have ACK'd this as I believe its a lot more useful information than
> > > > what we had before but I am confused by what some different prints may
> > > > yield. For example, on AR5213, I get:
> > > >
> > > > ath5k_pci 0001:11:02.0: Atheros AR5213 chip found: MAC 0x56, PHY: 0x41
> > > > ath5k_pci 0001:11:02.0: RF5111 5GHz radio found (0x17)
> > > > ath5k_pci 0001:11:02.0: RF2111 2GHz radio found (0x23)
> > > >
> > > > On my Cardbus card, I then get:
> > > >
> > > > ath5k_pci 0000:15:00.0: Atheros AR5213A chip found: MAC 0x59, PHY: 0x43
> > > > ath5k_pci 0000:15:00.0: RF5112A radio found (0x36)
> > > >
> > > > Now, both are capable of 2 GHz and 5 GHz though and only one prints a
> > > > line which shows the type of RF both for 2 GHz and 5 GHz. Essentially
> > > > my ah_radio_2ghz_revision is 0x00 for that card. What exactly does
> > > > having a print for both RFs here indicate besides the fact we are
> > > > indicating the type of radio and revision? And in the Cardbus card I
> > > > have where only one RF line is printed what does that indicate?
> > > >
> > > > Luis
> > >
> > > RF5111 is only 5GHz capable without 2111, 2111 is only 2GHz capable
> > > (it's actually an extension to 5111), on the other hand 5112 is
> > > multiband, that's why we don't say it's type.
> >
> > Can add in the message that its RF is multiband then (2GHz/5GHz note will work)?
> >
> > > On single chip solutions
> > > both revisions are 0 so no RF chip msg is displayed.
> >
> > Hm.. interesting.. we probably should inform the band the RF is
> > capable of then at least. What do you think?
> >
>
> Note: We set them to zero (check out attach) to make things easier.
> I believe that for single chips we should check capability bits and
> for b/g only report 2GHz, for a only report 5Ghz and for both report
> multband or nothing.

Agreed, and for the last part I think it might be more helpful to
report 'multiband' instead of nothing.

> > > We have to handle this better for b/g only cards but i didn't have
> > > such cards to test so i'll try it later (first we have to see what's
> > > going on and they don't work).
> >
> > You have one now?
> >
> > Luis
> >
>
> Nope but i believe that regdumps from them should give us something...

Yes, but its easier if we get you an BG card for testing purposes.
Anyone know where we can reliably purchase them from?

Luis

2007-11-01 05:34:28

by Michael Renzmann

[permalink] [raw]
Subject: Re: [ath5k-devel] [PATCH 4/7] ath5k: Add SREV values for newer chips

Hi.

>> Nope but i believe that regdumps from them should give us something...
> Yes, but its easier if we get you an BG card for testing purposes.
> Anyone know where we can reliably purchase them from?

I have to check first, but I think that we have received a b/g-only card
from Compex as part of their donation to MadWifi.

Bye, Mike