[stable] firmware-nonfree update for etchnhalf
I'd like to propose the following update for stable.
I've tested on an etch laptop w/ built-in intel 3945 wireless and a
server w/ a bnx2 nic under both etch and etchnhalf.
Index: debian/changelog
===================================================================
--- debian/changelog (.../releases/firmware-nonfree/0.4etch1) (revision 11527)
+++ debian/changelog (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -1,3 +1,13 @@
+firmware-nonfree (0.4+etchnhalf.1) UNRELEASED; urgency=low
+
+ * Backport iwlwifi and bnx2 firmware from 0.11 release, only used
+ in etch by drivers in the etchnhalf kernel.
+ * Add initramfs hook support for bnx2
+ * Correct path to initramfs.conf file in postinst which was preventing
+ initramfs updates for qlogic (and now bnx2) fw, closes: #432042
+
+ -- dann frazier <dannf@debian.org> Wed, 04 Jun 2008 01:33:43 -0600
+
firmware-nonfree (0.4etch1) stable; urgency=high
* Build-depend on linux-support-2.6.18-6; closes: #468215.
Index: debian/templates/postinst.initramfs-tools.in
===================================================================
--- debian/templates/postinst.initramfs-tools.in (.../releases/firmware-nonfree/0.4etch1) (revision 11527)
+++ debian/templates/postinst.initramfs-tools.in (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -4,7 +4,7 @@
case "$1" in
configure)
- if [ -x /usr/sbin/update-initramfs -a -e /etc/mkinitramfs/initramfs.conf ] ; then
+ if [ -x /usr/sbin/update-initramfs -a -e /etc/initramfs-tools/initramfs.conf ] ; then
update-initramfs -u
fi
;;
Index: bnx2/LICENSE
===================================================================
--- bnx2/LICENSE (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ bnx2/LICENSE (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,7 @@
+This file contains firmware data derived from proprietary unpublished
+source code, Copyright (c) 2004, 2005, 2006, 2007 Broadcom Corporation.
+
+Permission is hereby granted for the distribution of this firmware data
+in hexadecimal or equivalent format, provided this copyright notice is
+accompanying it.
+
Index: bnx2/fwcutter/bnx2_fwcutter_2.6.25.c
===================================================================
--- bnx2/fwcutter/bnx2_fwcutter_2.6.25.c (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ bnx2/fwcutter/bnx2_fwcutter_2.6.25.c (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,24 @@
+#include "bnx2_fwcutter.c"
+
+int main()
+{
+ write_firmware("bnx2-06-4.0.5.fw",
+ &bnx2_com_fw_06,
+ &bnx2_cp_fw_06,
+ &bnx2_rxp_fw_06,
+ &bnx2_tpat_fw_06,
+ &bnx2_txp_fw_06,
+ bnx2_rv2p_proc1, sizeof bnx2_rv2p_proc1,
+ bnx2_rv2p_proc2, sizeof bnx2_rv2p_proc2);
+ write_firmware("bnx2-09-4.0.5.fw",
+ &bnx2_com_fw_09,
+ &bnx2_cp_fw_09,
+ &bnx2_rxp_fw_09,
+ &bnx2_tpat_fw_09,
+ &bnx2_txp_fw_09,
+ bnx2_xi_rv2p_proc1, sizeof bnx2_xi_rv2p_proc2,
+ bnx2_xi_rv2p_proc2, sizeof bnx2_xi_rv2p_proc2);
+
+ return EXIT_SUCCESS;
+}
+
Index: bnx2/fwcutter/bnx2_fw_file.h
===================================================================
--- bnx2/fwcutter/bnx2_fw_file.h (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ bnx2/fwcutter/bnx2_fw_file.h (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,25 @@
+struct bnx2_fw_file_section {
+ uint32_t addr;
+ uint32_t len;
+ uint32_t offset;
+};
+
+struct bnx2_fw_file_entry {
+ uint32_t start_addr;
+ struct bnx2_fw_file_section text;
+ struct bnx2_fw_file_section data;
+ struct bnx2_fw_file_section sbss;
+ struct bnx2_fw_file_section bss;
+ struct bnx2_fw_file_section rodata;
+};
+
+struct bnx2_fw_file {
+ struct bnx2_fw_file_entry com;
+ struct bnx2_fw_file_entry cp;
+ struct bnx2_fw_file_entry rxp;
+ struct bnx2_fw_file_entry tpat;
+ struct bnx2_fw_file_entry txp;
+ struct bnx2_fw_file_section rv2p_proc1;
+ struct bnx2_fw_file_section rv2p_proc2;
+};
+
Index: bnx2/fwcutter/Makefile
===================================================================
--- bnx2/fwcutter/Makefile (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ bnx2/fwcutter/Makefile (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,15 @@
+ifndef KERNEL_SOURCE
+$(error Please define KERNEL_SOURCE)
+endif
+ifndef KERNEL_VERSION
+$(error Please define KERNEL_VERSION)
+endif
+
+CFLAGS += -I$(KERNEL_SOURCE)/drivers/net
+CFLAGS += --std=gnu99
+LDFLAGS += -lz
+
+all: bnx2_fwcutter_$(KERNEL_VERSION)
+
+bnx2_fwcutter_$(KERNEL_VERSION): bnx2_fwcutter_$(KERNEL_VERSION).c
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
Index: bnx2/fwcutter/bnx2_fwcutter.c
===================================================================
--- bnx2/fwcutter/bnx2_fwcutter.c (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ bnx2/fwcutter/bnx2_fwcutter.c (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,177 @@
+#include <assert.h>
+#include <byteswap.h>
+#include <endian.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <zlib.h>
+
+#include "bnx2_fw_file.h"
+
+struct fw_info {
+ const uint32_t ver_major;
+ const uint32_t ver_minor;
+ const uint32_t ver_fix;
+
+ const uint32_t start_addr;
+
+ /* Text section. */
+ const uint32_t text_addr;
+ const uint32_t text_len;
+ const uint32_t text_index;
+ void *text;
+ const void *gz_text;
+ const uint32_t gz_text_len;
+
+ /* Data section. */
+ const uint32_t data_addr;
+ const uint32_t data_len;
+ const uint32_t data_index;
+ const uint32_t *data;
+
+ /* SBSS section. */
+ const uint32_t sbss_addr;
+ const uint32_t sbss_len;
+ const uint32_t sbss_index;
+
+ /* BSS section. */
+ const uint32_t bss_addr;
+ const uint32_t bss_len;
+ const uint32_t bss_index;
+
+ /* Read-only section. */
+ const uint32_t rodata_addr;
+ const uint32_t rodata_len;
+ const uint32_t rodata_index;
+ const uint32_t *rodata;
+};
+
+typedef uint8_t u8;
+typedef uint32_t u32;
+
+#include "bnx2_fw.h"
+#include "bnx2_fw2.h"
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define cpu_to_be32(x) bswap_32(x)
+#elif __BYTE_ORDER == __BIG_ENDIAN
+#define cpu_to_be32(x) (x)
+#endif
+#define le32_to_be32(x) bswap_32(x)
+
+void set_firmware_image_part(struct bnx2_fw_file_section *s, uint32_t addr, uint32_t len)
+{
+ s->addr = cpu_to_be32(addr);
+ s->len = cpu_to_be32(len);
+}
+
+void write_firmware_flat(int fd, struct bnx2_fw_file_section *out, void *data, int len)
+{
+ off_t offset = lseek(fd, 0, SEEK_CUR);
+
+ uint32_t buf[0x10000];
+ struct z_stream_s strm;
+ memset(&strm, 0, sizeof strm);
+
+ strm.next_in = (void *)data;
+ strm.avail_in = len;
+ strm.next_out = (void *)buf;
+ strm.avail_out = sizeof buf;
+
+ int ret = inflateInit2(&strm, -MAX_WBITS);
+ assert(ret == Z_OK);
+ ret = inflate(&strm, Z_FINISH);
+ assert(ret == Z_STREAM_END);
+ unsigned int l = strm.total_out;
+
+ out->len = cpu_to_be32(l);
+ out->offset = cpu_to_be32(offset);
+
+ inflateEnd(&strm);
+
+ for (unsigned int j = 0; j < (l / 4); j++)
+ buf[j] = le32_to_be32(buf[j]);
+ write(fd, buf, l);
+}
+
+void write_firmware_image(int fd, struct bnx2_fw_file_entry *out, struct fw_info *fw)
+{
+ off_t offset = lseek(fd, 0, SEEK_CUR);
+
+ out->start_addr = cpu_to_be32(fw->start_addr);
+
+ set_firmware_image_part(&out->text, fw->text_addr, fw->text_len);
+ out->text.offset = cpu_to_be32(offset);
+
+ uint32_t buf[0x10000];
+ struct z_stream_s strm;
+ memset(&strm, 0, sizeof strm);
+
+ strm.next_in = (void *)fw->gz_text;
+ strm.avail_in = fw->gz_text_len;
+ strm.next_out = (void *)buf;
+ strm.avail_out = sizeof buf;
+
+ int ret = inflateInit2(&strm, -MAX_WBITS);
+ assert(ret == Z_OK);
+ ret = inflate(&strm, Z_FINISH);
+ assert(ret == Z_STREAM_END);
+ inflateEnd(&strm);
+
+ for (unsigned int j = 0; j < (fw->text_len / 4); j++)
+ buf[j] = le32_to_be32(buf[j]);
+ offset += write(fd, buf, fw->text_len);
+
+ if (fw->data_addr)
+ {
+ set_firmware_image_part(&out->data, fw->data_addr, fw->data_len);
+ out->data.offset = cpu_to_be32(offset);
+ for (unsigned int j = 0; j < (fw->data_len / 4); j++)
+ buf[j] = cpu_to_be32(fw->data[j]);
+ offset += write(fd, buf, fw->data_len);
+ }
+
+ if (fw->sbss_len)
+ set_firmware_image_part(&out->sbss, fw->sbss_addr, fw->sbss_len);
+
+ if (fw->bss_len)
+ set_firmware_image_part(&out->bss, fw->bss_addr, fw->bss_len);
+
+ if (fw->rodata_addr)
+ {
+ set_firmware_image_part(&out->rodata, fw->rodata_addr, fw->rodata_len);
+ out->rodata.offset = cpu_to_be32(offset);
+ for (unsigned int j = 0; j < (fw->rodata_len / 4); j++)
+ buf[j] = cpu_to_be32(fw->rodata[j]);
+ offset += write(fd, buf, fw->rodata_len);
+ }
+}
+
+void write_firmware(const char *filename, struct fw_info *com_fw, struct fw_info *cp_fw, struct fw_info *rxp_fw, struct fw_info *tpat_fw, struct fw_info *txp_fw, void *rv2p_proc1, int rv2p_proc1_len, void *rv2p_proc2, int rv2p_proc2_len)
+{
+ struct bnx2_fw_file out;
+ memset(&out, 0, sizeof out);
+
+ int fd = open(filename, O_WRONLY | O_CREAT, 0666);
+
+ lseek(fd, sizeof out, SEEK_SET);
+
+ write_firmware_image(fd, &out.com, com_fw);
+ write_firmware_image(fd, &out.cp, cp_fw);
+ write_firmware_image(fd, &out.rxp, rxp_fw);
+ write_firmware_image(fd, &out.tpat, tpat_fw);
+ write_firmware_image(fd, &out.txp, txp_fw);
+ write_firmware_flat(fd, &out.rv2p_proc1, rv2p_proc1, rv2p_proc1_len);
+ write_firmware_flat(fd, &out.rv2p_proc2, rv2p_proc2, rv2p_proc2_len);
+
+ lseek(fd, 0, SEEK_SET);
+
+ write(fd, &out, sizeof out);
+
+ close(fd);
+}
+
Index: bnx2/bnx2-06-4.0.5.fw
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: bnx2/bnx2-06-4.0.5.fw
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Index: bnx2/bnx2-09-4.0.5.fw
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: bnx2/bnx2-09-4.0.5.fw
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Index: bnx2/defines
===================================================================
--- bnx2/defines (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ bnx2/defines (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,16 @@
+[base]
+desc: Broadcom NetXtremeII
+files:
+ bnx2-06-4.0.5.fw
+ bnx2-09-4.0.5.fw
+longdesc: Broadcom NetXtremeII network adapters
+support: initramfs-tools
+uri: http://ftp.debian.org/debian/pool/non-free/f/firmware-nonfree
+
+[bnx2-06-4.0.5.fw_base]
+desc: Broadcom NetXtremeII 5706 firmware
+version: Linux 2.6.25
+
+[bnx2-09-4.0.5.fw_base]
+desc: Broadcom NetXtremeII 5709 firmware
+version: Linux 2.6.25
Index: iwlwifi/LICENSE
===================================================================
--- iwlwifi/LICENSE (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ iwlwifi/LICENSE (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,39 @@
+Copyright (c) 2006, Intel Corporation.
+All rights reserved.
+
+Redistribution. Redistribution and use in binary form, without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions must reproduce the above copyright notice and the
+ following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its suppliers
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+* No reverse engineering, decompilation, or disassembly of this software
+ is permitted.
+
+Limited patent license. Intel Corporation grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter
+owns or controls to make, have made, use, import, offer to sell and
+sell ("Utilize") this software, but solely to the extent that any
+such patent is necessary to Utilize the software alone, or in
+combination with an operating system licensed under an approved Open
+Source license as listed by the Open Source Initiative at
+http://opensource.org/licenses. The patent license shall not apply to
+any other combinations which include this software. No hardware per
+se is licensed hereunder.
+
+DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
Index: iwlwifi/iwlwifi-3945-1.ucode
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: iwlwifi/iwlwifi-3945-1.ucode
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Index: iwlwifi/iwlwifi-4965-1.ucode
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: iwlwifi/iwlwifi-4965-1.ucode
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Index: iwlwifi/update.sh
===================================================================
--- iwlwifi/update.sh (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ iwlwifi/update.sh (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+version="$1"
+url="$2"
+
+mkdir update
+curl -o update/ucode.tgz "$url"
+
+tar -C update -xzf update/ucode.tgz
+file="$(tar -tzf update/ucode.tgz | grep -e "\.ucode$")"
+file_real="${file#*/}"
+mv update/"$file" "$file_real"-"$version"
+
+rm update -rf
Property changes on: iwlwifi/update.sh
___________________________________________________________________
Name: svn:executable
+ *
Index: iwlwifi/defines
===================================================================
--- iwlwifi/defines (.../releases/firmware-nonfree/0.4etch1) (revision 0)
+++ iwlwifi/defines (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -0,0 +1,13 @@
+[base]
+desc: Intel Wireless 3945 and 4965
+files:
+ iwlwifi-3945-1.ucode
+ iwlwifi-4965-1.ucode
+longdesc: Intel Wireless 3945 and 4965 cards
+uri: http://intellinuxwireless.org/?p=iwlwifi&n=downloads
+
+[iwlwifi-3945-1.ucode_base]
+desc: Intel Wireless 3945 firmware
+
+[iwlwifi-4965-1.ucode_base]
+desc: Intel Wireless 4965 firmware
Index: defines
===================================================================
--- defines (.../releases/firmware-nonfree/0.4etch1) (revision 11527)
+++ defines (.../dists/etch/firmware-nonfree) (revision 11527)
@@ -1,4 +1,6 @@
[base]
packages:
+ bnx2
+ iwlwifi
ipw3945
qlogic
Reply to: