#!/usr/bin/perl

my $dtc_old = "/home/jdl/FSL/dtc/dtc-old";
my $dtc_new = "/home/jdl/FSL/dtc/dtc-new";

my $basic_options = "-b 0 -f -I dts -O dtb";

my $linux_dts_dir = "/usr/src/linux-2.6/arch/powerpc/boot/dts";

# Yeah, sure, we could, like, readdir() this instead...
my @boards = (
	      "bamboo",
	      "ebony",
	      "ep88xc",
	      "holly",
	      "kilauea",
	      "kuroboxHD",
	      "kuroboxHG",
	      "lite5200",
	      "lite5200b",
	      "mpc7448hpc2",
	      "mpc8272ads",
	      "mpc8313erdb",
	      "mpc832x_mds",
	      "mpc832x_rdb",
	      "mpc8349emitx",
	      "mpc8349emitxgp",
	      "mpc834x_mds",
	      "mpc836x_mds",
	      "mpc8540ads",
	      "mpc8541cds",
	      "mpc8544ds",
	      "mpc8548cds",
	      "mpc8555cds",
	      "mpc8560ads",
	      "mpc8568mds",
	      "mpc8572ds",
	      "mpc8610_hpcd",
	      "mpc8641_hpcn",
	      "mpc866ads",	# Feh.  Bad node references...
	      "mpc885ads",
	      "pq2fads",
	      "prpmc2800",
	      "ps3",
	      "sequoia",
	      "walnut",
);

foreach my $board (@boards) {
	my $dts_file = "$linux_dts_dir/$board.dts";

	my $old_dtb_file = "/tmp/$board.dtb.old";
	my $new_dtb_file = "/tmp/$board.dtb.new";

	my $cmd_old = "$dtc_old $basic_options -o $old_dtb_file $dts_file";
	my $cmd_new = "$dtc_new $basic_options -o $new_dtb_file $dts_file";
	my $cmd_cmp = "cmp $old_dtb_file $new_dtb_file";

	print "------------------------------------------------\n";
	print "OLD: $cmd_old\n";
	unlink($old_dtb_file) if (-f $old_dtb_file);
	system("$cmd_old >& /dev/null");
	my $status = $?;
	if ($status) {
		print "    FAILED to run old DTC on $board\n";
	}

	print "NEW: $cmd_new\n";
	unlink($new_dtb_file) if (-f $new_dtb_file);
	system("$cmd_new >& /dev/null");
	$status = $?;
	if ($status) {
		print "    FAILED to run new DTC on $board\n";
	}

	if (-f $old_dtb_file && -f $new_dtb_file) {
	    print "CMP: $cmd_cmp\n";
	    system($cmd_cmp);
	    $status = $?;
	    if ($status) {
		print "    FAILED $board\n";
	    }
	} else {
	    printf "    FAILED: Missing dtb file\n";
	}
}
