summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch')
-rw-r--r--target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch246
1 files changed, 0 insertions, 246 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch b/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch
deleted file mode 100644
index 2aff538da2..0000000000
--- a/target/linux/brcm2708/patches-4.4/0089-scripts-Multi-platform-support-for-mkknlimg-and-knli.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From 0fda3a1eb42445783633e477f261575222c3470b Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Wed, 11 Nov 2015 11:38:59 +0000
-Subject: [PATCH] scripts: Multi-platform support for mkknlimg and knlinfo
-
-The firmware uses tags in the kernel trailer to choose which dtb file
-to load. Current firmware loads bcm2835-*.dtb if the '283x' tag is true,
-otherwise it loads bcm270*.dtb. This scheme breaks if an image supports
-multiple platforms.
-
-This patch adds '270X' and '283X' tags to indicate support for RPi and
-upstream platforms, respectively. '283x' (note lower case 'x') is left
-for old firmware, and is only set if the image only supports upstream
-builds.
----
- scripts/knlinfo | 2 +
- scripts/mkknlimg | 136 +++++++++++++++++++++++++++++++------------------------
- 2 files changed, 80 insertions(+), 58 deletions(-)
-
---- a/scripts/knlinfo
-+++ b/scripts/knlinfo
-@@ -18,6 +18,8 @@ my %atom_formats =
- (
- 'DTOK' => \&format_bool,
- 'KVer' => \&format_string,
-+ '270X' => \&format_bool,
-+ '283X' => \&format_bool,
- '283x' => \&format_bool,
- );
-
---- a/scripts/mkknlimg
-+++ b/scripts/mkknlimg
-@@ -13,12 +13,20 @@ use strict;
- use warnings;
- use integer;
-
-+use constant FLAG_PI => 0x01;
-+use constant FLAG_DTOK => 0x02;
-+use constant FLAG_DDTK => 0x04;
-+use constant FLAG_270X => 0x08;
-+use constant FLAG_283X => 0x10;
-+
- my $trailer_magic = 'RPTL';
-
- my $tmpfile1 = "/tmp/mkknlimg_$$.1";
- my $tmpfile2 = "/tmp/mkknlimg_$$.2";
-
- my $dtok = 0;
-+my $ddtk = 0;
-+my $is_270x = 0;
- my $is_283x = 0;
-
- while (@ARGV && ($ARGV[0] =~ /^-/))
-@@ -28,6 +36,14 @@ while (@ARGV && ($ARGV[0] =~ /^-/))
- {
- $dtok = 1;
- }
-+ elsif ($arg eq '--ddtk')
-+ {
-+ $ddtk = 1;
-+ }
-+ elsif ($arg eq '--270x')
-+ {
-+ $is_270x = 1;
-+ }
- elsif ($arg eq '--283x')
- {
- $is_283x = 1;
-@@ -50,30 +66,33 @@ if (! -r $kernel_file)
- usage();
- }
-
--my @wanted_strings =
--(
-- 'bcm2708_fb',
-- 'brcm,bcm2835-mmc',
-- 'brcm,bcm2835-sdhost',
-- 'brcm,bcm2708-pinctrl',
-- 'brcm,bcm2835-gpio',
-- 'brcm,bcm2835',
-- 'brcm,bcm2836'
--);
-+my $wanted_strings =
-+{
-+ 'bcm2708_fb' => FLAG_PI,
-+ 'brcm,bcm2835-mmc' => FLAG_PI,
-+ 'brcm,bcm2835-sdhost' => FLAG_PI,
-+ 'brcm,bcm2708-pinctrl' => FLAG_PI | FLAG_DTOK,
-+ 'brcm,bcm2835-gpio' => FLAG_PI | FLAG_DTOK,
-+ 'brcm,bcm2708' => FLAG_PI | FLAG_DTOK | FLAG_270X,
-+ 'brcm,bcm2709' => FLAG_PI | FLAG_DTOK | FLAG_270X,
-+ 'brcm,bcm2835' => FLAG_PI | FLAG_DTOK | FLAG_283X,
-+ 'brcm,bcm2836' => FLAG_PI | FLAG_DTOK | FLAG_283X,
-+ 'of_overlay_apply' => FLAG_DTOK | FLAG_DDTK,
-+};
-
- my $res = try_extract($kernel_file, $tmpfile1);
--$res = try_decompress('\037\213\010', 'xy', 'gunzip', 0,
-- $kernel_file, $tmpfile1, $tmpfile2) if (!$res);
--$res = try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1,
-- $kernel_file, $tmpfile1, $tmpfile2) if (!$res);
--$res = try_decompress('BZh', 'xy', 'bunzip2', 0,
-- $kernel_file, $tmpfile1, $tmpfile2) if (!$res);
--$res = try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0,
-- $kernel_file, $tmpfile1, $tmpfile2) if (!$res);
--$res = try_decompress('\211\114\132', 'xy', 'lzop -d', 0,
-- $kernel_file, $tmpfile1, $tmpfile2) if (!$res);
--$res = try_decompress('\002\041\114\030', 'xy', 'lz4 -d', 1,
-- $kernel_file, $tmpfile1, $tmpfile2) if (!$res);
-+$res ||= try_decompress('\037\213\010', 'xy', 'gunzip', 0,
-+ $kernel_file, $tmpfile1, $tmpfile2);
-+$res ||= try_decompress('\3757zXZ\000', 'abcde', 'unxz --single-stream', -1,
-+ $kernel_file, $tmpfile1, $tmpfile2);
-+$res ||= try_decompress('BZh', 'xy', 'bunzip2', 0,
-+ $kernel_file, $tmpfile1, $tmpfile2);
-+$res ||= try_decompress('\135\0\0\0', 'xxx', 'unlzma', 0,
-+ $kernel_file, $tmpfile1, $tmpfile2);
-+$res ||= try_decompress('\211\114\132', 'xy', 'lzop -d', 0,
-+ $kernel_file, $tmpfile1, $tmpfile2);
-+$res ||= try_decompress('\002\041\114\030', 'xy', 'lz4 -d', 1,
-+ $kernel_file, $tmpfile1, $tmpfile2);
-
- my $append_trailer;
- my $trailer;
-@@ -83,27 +102,21 @@ $append_trailer = $dtok;
-
- if ($res)
- {
-- $kver = $res->{''} || '?';
-+ $kver = $res->{'kver'} || '?';
-+ my $flags = $res->{'flags'};
- print("Version: $kver\n");
-
-- $append_trailer = $dtok;
-- if (!$dtok)
-+ if ($flags & FLAG_PI)
- {
-- if (config_bool($res, 'bcm2708_fb') ||
-- config_bool($res, 'brcm,bcm2835-mmc') ||
-- config_bool($res, 'brcm,bcm2835-sdhost'))
-- {
-- $dtok ||= config_bool($res, 'brcm,bcm2708-pinctrl');
-- $dtok ||= config_bool($res, 'brcm,bcm2835-gpio');
-- $is_283x ||= config_bool($res, 'brcm,bcm2835');
-- $is_283x ||= config_bool($res, 'brcm,bcm2836');
-- $dtok ||= $is_283x;
-- $append_trailer = 1;
-- }
-- else
-- {
-- print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n");
-- }
-+ $append_trailer = 1;
-+ $dtok ||= ($flags & FLAG_DTOK) != 0;
-+ $is_270x ||= ($flags & FLAG_270X) != 0;
-+ $is_283x ||= ($flags & FLAG_283X) != 0;
-+ $ddtk ||= ($flags & FLAG_DDTK) != 0;
-+ }
-+ else
-+ {
-+ print ("* This doesn't look like a Raspberry Pi kernel. In pass-through mode.\n");
- }
- }
- elsif (!$dtok)
-@@ -114,6 +127,8 @@ elsif (!$dtok)
- if ($append_trailer)
- {
- printf("DT: %s\n", $dtok ? "y" : "n");
-+ printf("DDT: %s\n", $ddtk ? "y" : "n") if ($ddtk);
-+ printf("270x: %s\n", $is_270x ? "y" : "n");
- printf("283x: %s\n", $is_283x ? "y" : "n");
-
- my @atoms;
-@@ -121,7 +136,10 @@ if ($append_trailer)
- push @atoms, [ $trailer_magic, pack('V', 0) ];
- push @atoms, [ 'KVer', $kver ];
- push @atoms, [ 'DTOK', pack('V', $dtok) ];
-- push @atoms, [ '283x', pack('V', $is_283x) ];
-+ push @atoms, [ 'DDTK', pack('V', $ddtk) ] if ($ddtk);
-+ push @atoms, [ '270X', pack('V', $is_270x) ];
-+ push @atoms, [ '283X', pack('V', $is_283x) ];
-+ push @atoms, [ '283x', pack('V', $is_283x && !$is_270x) ];
-
- $trailer = pack_trailer(\@atoms);
- $atoms[0]->[1] = pack('V', length($trailer));
-@@ -175,7 +193,7 @@ END {
-
- sub usage
- {
-- print ("Usage: mkknlimg [--dtok] [--283x] <vmlinux|zImage|bzImage> <outfile>\n");
-+ print ("Usage: mkknlimg [--dtok] [--270x] [--283x] <vmlinux|zImage|bzImage> <outfile>\n");
- exit(1);
- }
-
-@@ -189,15 +207,8 @@ sub try_extract
-
- chomp($ver);
-
-- my $res = { ''=>$ver };
-- my $string_pattern = '^('.join('|', @wanted_strings).')$';
--
-- my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`;
-- foreach my $match (@matches)
-- {
-- chomp($match);
-- $res->{$match} = 1;
-- }
-+ my $res = { 'kver'=>$ver };
-+ $res->{'flags'} = strings_to_flags($knl, $wanted_strings);
-
- return $res;
- }
-@@ -224,6 +235,22 @@ sub try_decompress
- return undef;
- }
-
-+sub strings_to_flags
-+{
-+ my ($knl, $strings) = @_;
-+ my $string_pattern = '^('.join('|', keys(%$strings)).')$';
-+ my $flags = 0;
-+
-+ my @matches = `strings \"$knl\" | grep -E \"$string_pattern\"`;
-+ foreach my $match (@matches)
-+ {
-+ chomp($match);
-+ $flags |= $strings->{$match};
-+ }
-+
-+ return $flags;
-+}
-+
- sub pack_trailer
- {
- my ($atoms) = @_;
-@@ -235,10 +262,3 @@ sub pack_trailer
- }
- return $trailer;
- }
--
--sub config_bool
--{
-- my ($configs, $wanted) = @_;
-- my $val = $configs->{$wanted} || 'n';
-- return (($val eq 'y') || ($val eq '1'));
--}