Hi Luciano, On Tue, Jan 17, 2012 at 14:48, Luciano Coelho <coelho@xxxxxx> wrote: > On Tue, 2012-01-17 at 11:46 +1100, Julian Calaby wrote: >> Hi Luciano, >> >> On Tue, Jan 17, 2012 at 01:23, Luciano Coelho <coelho@xxxxxx> wrote: >> > Add a testmode command to retrieve the MAC address that is stored in >> > the Fuse ROM in newer PGs. In old PGs this operation is not >> > supported. >> > >> > Signed-off-by: Luciano Coelho <coelho@xxxxxx> >> > --- >> > drivers/net/wireless/wl12xx/boot.c | 3 +- >> > drivers/net/wireless/wl12xx/boot.h | 10 ---- >> > drivers/net/wireless/wl12xx/reg.h | 15 ++++++ >> > drivers/net/wireless/wl12xx/testmode.c | 87 ++++++++++++++++++++++++++++++++ >> > 4 files changed, 104 insertions(+), 11 deletions(-) >> > >> > diff --git a/drivers/net/wireless/wl12xx/testmode.c b/drivers/net/wireless/wl12xx/testmode.c >> > index 25093c0..613e0b3 100644 >> > --- a/drivers/net/wireless/wl12xx/testmode.c >> > +++ b/drivers/net/wireless/wl12xx/testmode.c >> > @@ -264,6 +266,89 @@ static int wl1271_tm_cmd_recover(struct wl1271 *wl, struct nlattr *tb[]) >> > return 0; >> > } >> > >> > +static bool wl12xx_tm_mac_in_fuse(struct wl1271 *wl) >> > +{ >> > + bool supported = false; >> > + u8 major, minor; >> > + >> > + if (wl->chip.id == CHIP_ID_1283_PG20) { >> > + major = (wl->hw_pg_ver & WL128X_PG_MAJOR_VER_MASK) >> >> > + WL128X_PG_MAJOR_VER_OFFSET; >> > + minor = (wl->hw_pg_ver & WL128X_PG_MINOR_VER_MASK) >> >> > + WL128X_PG_MINOR_VER_OFFSET; >> > + >> > + /* in wl128x we have the MAC address if the PG is >= (2, 1) */ >> > + if (major > 2 || (major == 2 && minor >= 1)) >> > + supported = true; >> > + } else { >> > + major = (wl->hw_pg_ver & WL127X_PG_MAJOR_VER_MASK) >> >> > + WL127X_PG_MAJOR_VER_OFFSET; >> > + minor = (wl->hw_pg_ver & WL127X_PG_MINOR_VER_MASK) >> >> > + WL127X_PG_MINOR_VER_OFFSET; >> > + >> > + /* in wl127x we have the MAC address if the PG is >= (3, 1) */ >> > + if (major == 3 && minor >= 1) >> >> Is this test correct? Do only major == 3 PGs support this command? > > Yes, major == 3 and minor greater than or equal to 1. Actually, there > can't be a major greater than 3, because it's only 2 bits, so 3 is the > maximum value. Just wanted to check as it seemed odd compared to the block for the WL128X parts. I'm guessing TI never expected these parts to last long enough to have more than 3 major revisions =) Thanks, -- Julian Calaby Email: julian.calaby@xxxxxxxxx Profile: http://www.google.com/profiles/julian.calaby/ .Plan: http://sites.google.com/site/juliancalaby/ -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html