summaryrefslogtreecommitdiffstats
path: root/sys/dev/cxgb/bin2h.pl
diff options
context:
space:
mode:
authorkmacy <kmacy@FreeBSD.org>2008-02-26 03:02:20 +0000
committerkmacy <kmacy@FreeBSD.org>2008-02-26 03:02:20 +0000
commit3c2b753612b7a8288525cdf8481727ac73cb25ef (patch)
treee4dabfbcd90a45ff6c8ded3887a3e5cd387cf560 /sys/dev/cxgb/bin2h.pl
parentb54152091e62752ddc63ffffe7c4735b80a73cdb (diff)
downloadFreeBSD-src-3c2b753612b7a8288525cdf8481727ac73cb25ef.zip
FreeBSD-src-3c2b753612b7a8288525cdf8481727ac73cb25ef.tar.gz
Move firmware in to separate module that can be compiled statically in to the kernel
Add utility for converting future firmware revs to a C header file
Diffstat (limited to 'sys/dev/cxgb/bin2h.pl')
-rw-r--r--sys/dev/cxgb/bin2h.pl79
1 files changed, 79 insertions, 0 deletions
diff --git a/sys/dev/cxgb/bin2h.pl b/sys/dev/cxgb/bin2h.pl
new file mode 100644
index 0000000..01a97a3
--- /dev/null
+++ b/sys/dev/cxgb/bin2h.pl
@@ -0,0 +1,79 @@
+#!/usr/bin/perl -w
+
+#$FreeBSD$
+
+if ($#ARGV != 1) {
+ print "bin2h.pl <firmware> <headername>\n";
+ exit 1;
+}
+
+my $success = open INPUT, "$ARGV[0]";
+unless ($success) {
+ print "failed to open input\n";
+ exit 1;
+}
+$success = open OUTPUT, ">$ARGV[1]";
+unless ($success) {
+ print "failed to open output\n";
+ exit 1;
+}
+
+
+my $license = <<END;
+/**************************************************************************
+
+Copyright (c) 2007-2008, Chelsio Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Neither the name of the Chelsio Corporation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+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 IN22
+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.
+
+
+\$FreeBSD\$
+
+***************************************************************************/
+END
+print OUTPUT "$license\n";
+
+
+my $binary;
+
+my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+ $atime,$mtime,$ctime,$blksize,$blocks)
+ = stat($ARGV[0]);
+
+
+print OUTPUT "#define U (unsigned char)\n\n";
+
+print OUTPUT "static unsigned int t3fw_length = $size;\n";
+print OUTPUT "static unsigned char t3fw[$size] = {\n";
+
+for (my $i = 0; $i < $size; $i += 4) {
+ my $number_read = read(INPUT, $binary, 4);
+ my ($a, $b, $c, $d) = unpack("C C C C", $binary);
+ $buf = sprintf("U 0x%02X, U 0x%02X, U 0x%02X, U 0x%02X, \n", $a, $b, $c, $d);
+ print OUTPUT $buf;
+}
+print OUTPUT "};\n";
+
+
+
OpenPOWER on IntegriCloud