Skip to contentSkip to conversation

b43: Add LP-PHY firmware loading support

PATCH Superseded Gábor Stefanik 4 participants 9 messages Aug 14, 2009 2 messages not in the archive Networking drivers (wireless)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 b43: Add LP-PHY firmware loading support

Add support for loading LP-PHY firmware to b43_try_request_fw.

---
For anyone hoping that the channel switch patches will make their LP card work - this is also definitely required.

Mark, this doesn't fix your problem specifically, but it will be needed after your problem is fixed.

drivers/net/wireless/b43/main.c | 24 +++++++++++++++++++++++-

1 files changed, 23 insertions(+), 1 deletions(-)
drivers/net/wireless/b43/main.c +0 -0
index fbcbe4f..1e657fe 100644
@@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
		filename = "ucode5";
	else if ((rev >= 11) && (rev <= 12))
		filename = "ucode11";
-	else if (rev >= 13)
+	else if (rev == 13)
		filename = "ucode13";
+	else if (rev == 14)
+		filename = "ucode14";
+	else if (rev >= 15)
+		filename = "ucode15";
	else
		goto err_no_ucode;
	err = b43_do_request_fw(ctx, filename, &fw->ucode);
@@ -2111,6 +2115,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
		else
			goto err_no_initvals;
		break;

+ case B43_PHYTYPE_LP:
+ if (rev == 13)
+ filename = "lp0initvals13";
+ else if (rev == 14)
+ filename = "lp0initvals14";
+ else if (rev >= 15)
+ filename = "lp0initvals15";
+ else

+			goto err_no_initvals;
	default:
		goto err_no_initvals;
	}
@@ -2145,6 +2158,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
		else
			goto err_no_initvals;
		break;

+ case B43_PHYTYPE_LP:
+ if (rev == 13)
+ filename = "lp0bsinitvals13";
+ else if (rev == 14)
+ filename = "lp0bsinitvals14";
+ else if (rev >= 15)
+ filename = "lp0bsinitvals15";
+ else

+			goto err_no_initvals;
	default:
		goto err_no_initvals;
	}
Signature · 1 line
1.6.2.4
#1 lore raw

Missing break in initval case switches, see below.

Quoted 33 lines · Gábor Stefanik

Add support for loading LP-PHY firmware to b43_try_request_fw.

---
For anyone hoping that the channel switch patches will make their LP card work - this is also definitely required.

Mark, this doesn't fix your problem specifically, but it will be needed after your problem is fixed.

 drivers/net/wireless/b43/main.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)
drivers/net/wireless/b43/main.c +5 -1
index fbcbe4f..1e657fe 100644
@@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		filename = "ucode5";
 	else if ((rev >= 11) && (rev <= 12))
 		filename = "ucode11";
-	else if (rev >= 13)
+	else if (rev == 13)
 		filename = "ucode13";
+	else if (rev == 14)
+		filename = "ucode14";
+	else if (rev >= 15)
+		filename = "ucode15";
 	else
 		goto err_no_ucode;
 	err = b43_do_request_fw(ctx, filename, &fw->ucode);
@@ -2111,6 +2115,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		else
 			goto err_no_initvals;
 		break;

drivers/net/wireless/b43/main.c static int b43_try_request_fw(struct b43_request_fw_context *ctx) · line 2127

Quoted 10 lines
drivers/net/wireless/b43/main.c +9 -0
+	case B43_PHYTYPE_LP:
+		if (rev == 13)
+			filename = "lp0initvals13";
+		else if (rev == 14)
+			filename = "lp0initvals14";
+		else if (rev >= 15)
+			filename = "lp0initvals15";
+		else
+			goto err_no_initvals;
 

break;

Quoted 7 lines
drivers/net/wireless/b43/main.c +0 -0
 	default:
 		goto err_no_initvals;
drivers/net/wireless/b43/main.c +0 -0
 	}
@@ -2145,6 +2158,15 @@ static int b43_try_request_fw(struct b43_request_fw_context *ctx)
 		else
 			goto err_no_initvals;
 		break;

drivers/net/wireless/b43/main.c static int b43_try_request_fw(struct b43_request_fw_context *ctx) · line 2170

Quoted 10 lines
drivers/net/wireless/b43/main.c +9 -0
+	case B43_PHYTYPE_LP:
+		if (rev == 13)
+			filename = "lp0bsinitvals13";
+		else if (rev == 14)
+			filename = "lp0bsinitvals14";
+		else if (rev >= 15)
+			filename = "lp0bsinitvals15";
+		else
+			goto err_no_initvals;
 

break;

Quoted 4 lines
drivers/net/wireless/b43/main.c +0 -0
 	default:
 		goto err_no_initvals;

}

#2 lore raw
In reply to Gábor Stefanik
Quoted 20 lines · Gábor Stefanik

Add support for loading LP-PHY firmware to b43_try_request_fw.

---
For anyone hoping that the channel switch patches will make their LP card work - this is also definitely required.

Mark, this doesn't fix your problem specifically, but it will be needed after your problem is fixed.

drivers/net/wireless/b43/main.c | 24 +++++++++++++++++++++++-

1 files changed, 23 insertions(+), 1 deletions(-)
drivers/net/wireless/b43/main.c +0 -0
index fbcbe4f..1e657fe 100644
@@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct
 b43_request_fw_context *ctx)

drivers/net/wireless/b43/main.c static int b43_try_request_fw(struct · line 2071

Quoted 10 lines
drivers/net/wireless/b43/main.c +5 -1
        filename = "ucode5";
    else if ((rev >= 11) && (rev <= 12))
        filename = "ucode11";
-    else if (rev >= 13)
+    else if (rev == 13)
        filename = "ucode13";
+    else if (rev == 14)
+        filename = "ucode14";
+    else if (rev >= 15)
+        filename = "ucode15";

As shown by http://bcm-v4.sipsolutions.net/802.11/Init/Firmware, one should also have "ucode16".

Quoted 6 lines
drivers/net/wireless/b43/main.c +0 -0
    else
        goto err_no_ucode;
    err = b43_do_request_fw(ctx, filename, &fw->ucode);
drivers/net/wireless/b43/main.c +0 -0
@@ -2111,6 +2115,15 @@ static int b43_try_request_fw(struct
 b43_request_fw_context *ctx)
        else

drivers/net/wireless/b43/main.c static int b43_try_request_fw(struct · line 2126

Quoted 10 lines
drivers/net/wireless/b43/main.c +8 -0
            goto err_no_initvals;
        break;
+    case B43_PHYTYPE_LP:
+        if (rev == 13)
+            filename = "lp0initvals13";
+        else if (rev == 14)
+            filename = "lp0initvals14";
+        else if (rev >= 15)
+            filename = "lp0initvals15";
+        else

Same for lp0initvals16.

Quoted 6 lines
drivers/net/wireless/b43/main.c +1 -0
+            goto err_no_initvals;
    default:
        goto err_no_initvals;
    }
drivers/net/wireless/b43/main.c +0 -0
@@ -2145,6 +2158,15 @@ static int b43_try_request_fw(struct
 b43_request_fw_context *ctx)

drivers/net/wireless/b43/main.c static int b43_try_request_fw(struct · line 2168

Quoted 10 lines
drivers/net/wireless/b43/main.c +7 -0
        else
            goto err_no_initvals;
        break;
+    case B43_PHYTYPE_LP:
+        if (rev == 13)
+            filename = "lp0bsinitvals13";
+        else if (rev == 14)
+            filename = "lp0bsinitvals14";
+        else if (rev >= 15)
+            filename = "lp0bsinitvals15";

and lp0bsinitvals16.

Quoted 5 lines
drivers/net/wireless/b43/main.c +2 -0
+        else
+            goto err_no_initvals;
    default:
        goto err_no_initvals;
    }

Larry

#3 lore raw

2009/8/14 Larry Finger <[email protected]>:

Quoted 73 lines
Quoted 20 lines · Gábor Stefanik

Add support for loading LP-PHY firmware to b43_try_request_fw.

---
For anyone hoping that the channel switch patches will make their LP card work - this is also definitely required.

Mark, this doesn't fix your problem specifically, but it will be needed after your problem is fixed.

drivers/net/wireless/b43/main.c |   24 +++++++++++++++++++++++-

1 files changed, 23 insertions(+), 1 deletions(-)
drivers/net/wireless/b43/main.c +0 -0
index fbcbe4f..1e657fe 100644
@@ -2062,8 +2062,12 @@ static int b43_try_request_fw(struct
 b43_request_fw_context *ctx)

drivers/net/wireless/b43/main.c static int b43_try_request_fw(struct · line 2071

Quoted 10 lines
drivers/net/wireless/b43/main.c +5 -1
         filename = "ucode5";
     else if ((rev >= 11) && (rev <= 12))
         filename = "ucode11";
-    else if (rev >= 13)
+    else if (rev == 13)
         filename = "ucode13";
+    else if (rev == 14)
+        filename = "ucode14";
+    else if (rev >= 15)
+        filename = "ucode15";

As shown by http://bcm-v4.sipsolutions.net/802.11/Init/Firmware, one should also have "ucode16".

Quoted 8 lines

    else
        goto err_no_ucode;
    err = b43_do_request_fw(ctx, filename, &fw->ucode);

drivers/net/wireless/b43/main.c +0 -0
@@ -2111,6 +2115,15 @@ static int b43_try_request_fw(struct
 b43_request_fw_context *ctx)

        else
            goto err_no_initvals;
        break;

Quoted 8 lines

+    case B43_PHYTYPE_LP:
+        if (rev == 13)
+            filename = "lp0initvals13";
+        else if (rev == 14)
+            filename = "lp0initvals14";
+        else if (rev >= 15)
+            filename = "lp0initvals15";
+        else

Same for lp0initvals16.

Quoted 8 lines

+            goto err_no_initvals;
    default:
        goto err_no_initvals;
    }

drivers/net/wireless/b43/main.c +0 -0
@@ -2145,6 +2158,15 @@ static int b43_try_request_fw(struct
 b43_request_fw_context *ctx)

        else
            goto err_no_initvals;

Quoted 8 lines

        break;
+    case B43_PHYTYPE_LP:
+        if (rev == 13)
+            filename = "lp0bsinitvals13";
+        else if (rev == 14)
+            filename = "lp0bsinitvals14";
+        else if (rev >= 15)
+            filename = "lp0bsinitvals15";

and lp0bsinitvals16.

Quoted 8 lines
Quoted 5 lines

+        else
+            goto err_no_initvals;
    default:
        goto err_no_initvals;
    }

Larry

Is rev.16 firmware available anywhere?

Signature · 1 line
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
#4 lore raw
Quoted 3 lines · Gábor Stefanik

Is rev.16 firmware available anywhere?

finger@larrylap:~/wireless-testing> ls /lib/firmware/b43
a0b0bsinitvals4.fw a0g1bsinitvals5.fw b0g0initvals13.fw
lp0initvals13.fw n0initvals16.fw ucode15.fw
a0b0gsinitvals5.fw a0g1bsinitvals9.fw b0g0initvals13.fw_save
lp0initvals14.fw pcm4.fw ucode16.fw
a0g0bsinitvals4.fw a0g1initvals13.fw b0g0initvals4.fw
lp0initvals15.fw pcm5.fw ucode4.fw
a0g0bsinitvals5.fw a0g1initvals5.fw b0g0initvals5.fw
lp0initvals16.fw sslpn0bsinitvals16.fw ucode5.fw
a0g0bsinitvals9.fw a0g1initvals9.fw b0g0initvals9.fw
n0absinitvals11.fw sslpn0initvals16.fw ucode9.fw
a0g0initvals4.fw b0g0bsinitvals13.fw lp0bsinitvals13.fw
n0absinitvals13.fw ucode11.fw
a0g0initvals5.fw b0g0bsinitvals4.fw lp0bsinitvals14.fw
n0bsinitvals11.fw ucode13.fw
a0g0initvals9.fw b0g0bsinitvals5.fw lp0bsinitvals15.fw
n0bsinitvals16.fw ucode13.fw_save
a0g1bsinitvals13.fw b0g0bsinitvals9.fw lp0bsinitvals16.fw
n0initvals11.fw ucode14.fw

I installed my firmware using openSUSE's script called /usr/sbin/install_bcm43xx_firmware, which uses the driver file broadcom-wl-4.150.10.5.tar.bz2, and rev 16 firmware is there.

Larry

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#7 lore raw

(Restored CCs.)

2009/8/14 Larry Finger <[email protected]>:

Quoted 6 lines
Quoted 4 lines · Gábor Stefanik

On http://bu3sch.de/gitweb?p=b43-tools.git;a=blob;f=fwcutter/fwcutter_list.h;hb=HEAD,
it doesn't look like v4.150.10.5 contains rev16 - there is one version that does have it, but the link to that file is dead.

Quoted 8 lines

The rev 16 firmware definitely is in driver 4.174.64.19, but not in 4.150.10.5. I'll have to figure out where I got it, and what modifications are needed in fwcutter to make it available.

I suggest that you do the mods to the firmware loading. If Broadcom has it in their driver, there must be hardware that needs it.

Larry

I would say that's a goal for later - the FIFO sizes are different, so it would clearly need more work than just loading the firmware to support rev16 devices.

Signature · 1 line
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
#9 lore raw

2009/8/14 Michael Buesch <[email protected]>:

Quoted 9 lines · On Friday 14 August 2009 13:51:59 Gábor Stefanik wrote:
Quoted 3 lines

Add support for loading LP-PHY firmware to b43_try_request_fw.

ack
--
Greetings, Michael.

This version is broken - ack "v3 this time really" instead.

Signature · 1 line
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
#10 lore raw
Quoted 4 lines · On Friday 14 August 2009 22:20:55 Gábor Stefanik wrote:

2009/8/14 Michael Buesch <[email protected]>:

Quoted 3 lines · On Friday 14 August 2009 13:51:59 Gábor Stefanik wrote:
Quoted 2 lines

Add support for loading LP-PHY firmware to b43_try_request_fw.

Quoted 9 lines
Quoted 6 lines
Quoted 1 line

ack
--
Greetings, Michael.

This version is broken - ack "v3 this time really" instead.

yeah whatever

Signature · 1 line
Greetings, Michael.