@@ -32,6 +32,8 @@ my @extra_base_files = (
32
32
" bcm2710-rpi-2-b" ,
33
33
" bcm2711-rpi-400" ,
34
34
" bcm2712-rpi-cm5-cm4io" ,
35
+ " bcm2712-rpi-cm5l-cm5io" ,
36
+ " bcm2712-rpi-cm5l-cm4io" ,
35
37
);
36
38
37
39
my %platform_reps = (
@@ -96,10 +98,52 @@ my $kerndir = `git rev-parse --show-toplevel 2>/dev/null`;
96
98
chomp ($kerndir );
97
99
fatal_error(" This isn't a Linux repository" ) if (!-d " $kerndir /kernel" );
98
100
99
- my $dtsdir = $kerndir ." /arch/arm/boot/dts" ;
100
- my $dtssubdir = $dtsdir ;
101
- $dtssubdir .= " /broadcom" if (-f $dtsdir ." /broadcom/Makefile" );
102
- chdir ($dtssubdir );
101
+ # 32-bit first, to avoid the #include "arm/broadcom..." versions in the arm64 tree
102
+ my $dtspath = (-f $kerndir ." /arch/arm/boot/dts/broadcom/Makefile" ) ?
103
+ $kerndir ." /arch/arm/boot/dts/broadcom" :
104
+ $kerndir ." /arch/arm/boot/dts" ;
105
+
106
+ my $dts64path = (-f $kerndir ." /arch/arm64/boot/dts/broadcom/Makefile" ) ?
107
+ $kerndir ." /arch/arm64/boot/dts/broadcom" :
108
+ $kerndir ." /arch/arm64/boot/dts" ;
109
+
110
+ my (@base32_files , @base64_files , @extra_base32_files , @extra_base64_files );
111
+
112
+ foreach my $base (@base_files )
113
+ {
114
+ if (-f $dtspath ." /" .$base ." .dts" )
115
+ {
116
+ push @base32_files , $base ;
117
+ }
118
+ elsif (-f $dts64path ." /" .$base ." .dts" )
119
+ {
120
+ push @base64_files , $base ;
121
+ }
122
+ }
123
+
124
+ foreach my $base (@extra_base_files )
125
+ {
126
+ if (-f $dtspath ." /" .$base ." .dts" )
127
+ {
128
+ push @extra_base32_files , $base ;
129
+ }
130
+ elsif (-f $dts64path ." /" .$base ." .dts" )
131
+ {
132
+ push @extra_base64_files , $base ;
133
+ }
134
+ }
135
+
136
+ my @dtsgroups = (
137
+ [ $dts64path , \@base64_files ],
138
+ [ $dtspath , \@base32_files ],
139
+ );
140
+
141
+ my @extra_dtsgroups = (
142
+ [ $dts64path , \@extra_base64_files ],
143
+ [ $dtspath , \@extra_base32_files ],
144
+ );
145
+
146
+ my $overlaysdir = $kerndir ." /arch/arm/boot/dts/overlays" ;
103
147
104
148
my @cpp_cmd =
105
149
(
@@ -147,19 +191,19 @@ foreach my $warn (@warnings_to_suppress)
147
191
148
192
my $dtc_opts = join (' ' , @dtc_opts );
149
193
194
+ # Parse the exclusions
195
+
150
196
my ($ignore_missing , $ignore_vestigial ) = parse_exclusions($exclusions_file );
151
197
152
198
# Parse the README
153
199
154
- chdir ($dtsdir );
155
-
156
- my $readme = parse_readme(" overlays/README" );
200
+ chdir ($overlaysdir );
157
201
158
- # Parse the base dts's and overlays
202
+ my $readme = parse_readme( " README " );
159
203
160
- my $source = parse_source_files( $dtsdir , $dtssubdir );
204
+ # Parse the base dts files and overlays
161
205
162
- # Parse the exclusions
206
+ my $source = parse_source_files( $overlaysdir , @dtsgroups , @extra_dtsgroups );
163
207
164
208
# Compare the two
165
209
@@ -217,9 +261,9 @@ foreach my $overlay (@$common)
217
261
218
262
# Parse the Makefile
219
263
220
- chdir ($dtsdir );
264
+ chdir ($overlaysdir );
221
265
222
- my $makefile = parse_makefile(" overlays/ Makefile" );
266
+ my $makefile = parse_makefile(" Makefile" );
223
267
224
268
($left_only , $common , $right_only ) =
225
269
compare_sets([keys (%$source )], $makefile );
@@ -231,19 +275,20 @@ $fail ||= (@$left_only || @$right_only);
231
275
232
276
# Now some build/runtime checks
233
277
234
- chdir ($dtssubdir );
235
-
236
- foreach my $base (@base_files , @extra_base_files )
278
+ foreach my $group (@dtsgroups , @extra_dtsgroups )
237
279
{
238
- next if (!-f " $base .dts" );
239
- dtc_cpp(" $base .dts" , " $TMPDIR /$base .dtb" );
240
- if (system (" ovmerge -q $base .dts" ) >> 8)
280
+ chdir ($group -> [0]);
281
+ foreach my $base (@{$group -> [1]})
241
282
{
242
- error(" Error ^ in base file $base .dts\n " );
283
+ dtc_cpp(" $base .dts" , " $TMPDIR /$base .dtb" );
284
+ if (system (" ovmerge -q $base .dts" ) >> 8)
285
+ {
286
+ error(" Error ^ in base file $base .dts\n " );
287
+ }
243
288
}
244
289
}
245
290
246
- chdir ($dtsdir . " /overlays " );
291
+ chdir ($overlaysdir );
247
292
248
293
dtc_cpp(" overlay_map.dts" , " $TMPDIR /overlay_map.dtb" ) if (-r " overlay_map.dts" );
249
294
@@ -281,7 +326,7 @@ if ($try_all)
281
326
foreach my $base (@base_files )
282
327
{
283
328
next if (!-f " $TMPDIR /$base .dtb" );
284
- next if (($overlay =~ / (wifi|bt)/ ) && ($base !~ / ^(bcm2708-rpi-zero-w|bcm2709-rpi-zero-2|bcm2710-rpi-3-|bcm2711-rpi-(4|cm4$) |bcm2712-rpi-5 )/ ));
329
+ next if (($overlay =~ / (wifi|bt)/ ) && ($base !~ / ^(bcm2708-rpi-zero-w|bcm2709-rpi-zero-2|bcm2710-rpi-3-|bcm2711-rpi-(4|cm4$) |bcm2712-rpi-(5|cm5) )/ ));
285
330
next if ($overlay_props -> {' bcm2711' } && $base !~ / ^bcm2711/ );
286
331
next if ($overlay_props -> {' bcm2712' } && $base !~ / ^bcm2712/ );
287
332
next if (system (" $DTMERGE $TMPDIR /$base .dtb $MERGED_DTB $TMPDIR /$overlay .dtbo >/dev/null 2>&1" ) == ((-2 & 0xff) << 8));
@@ -361,35 +406,38 @@ sub list_print
361
406
362
407
sub parse_source_files
363
408
{
364
- my ($dtsdir , $dtssubdir ) = @_ ;
409
+ my ($overlaydir , @dtsgroups ) = @_ ;
365
410
my $overlays = {};
366
411
367
412
my %params ;
368
413
369
- chdir ($dtssubdir );
370
-
371
- foreach my $file (glob (" bcm2708*.dts bcm2709*.dts bcm2710*.dts bcm2711*.dts bcm2712*.dts" ))
414
+ foreach my $group (@dtsgroups )
372
415
{
373
- foreach my $param (get_params($file ))
416
+ chdir ($group -> [0]);
417
+
418
+ foreach my $file (@{$group -> [1]})
374
419
{
375
- next if (ref $param );
376
- $params {$param } = 1;
420
+ foreach my $param (get_params($file ." .dts" ))
421
+ {
422
+ next if (ref $param );
423
+ $params {$param } = 1;
424
+ }
377
425
}
378
426
}
379
427
380
- chdir ($dtsdir );
428
+ chdir ($overlaydir );
381
429
382
430
$overlays -> {' <The base DTB>' } = [ sort (keys (%params )) ];
383
431
384
- foreach my $file (glob (" overlays/ *-overlay.dts" ))
432
+ foreach my $file (glob (" *-overlay.dts" ))
385
433
{
386
- my $overlay = ($file =~ / ^overlays \/ (.*)-overlay.dts$ / )[0];
434
+ my $overlay = ($file =~ / ^(.*)-overlay.dts$ / )[0];
387
435
388
436
my $redo_cmd = ` grep '// redo: ' $file ` ;
389
437
if ($redo_cmd =~ / \/\/ redo: ([^\r\n ]+)/ )
390
438
{
391
439
system (" cp $file overlaycheck.dts" );
392
- system (" cd overlays; ovmerge -r ../ overlaycheck.dts > $overlay -overlay.dts" );
440
+ system (" ovmerge -r overlaycheck.dts > $overlay -overlay.dts" );
393
441
system (" rm overlaycheck.dts" );
394
442
if (system (" git diff --quiet $file " ) >> 8)
395
443
{
0 commit comments