common.sh revision f6c209b3f409f879305ac9837524b9d34c850de6
1f6c209b3f409f879305ac9837524b9d34c850de6Li Chen#!/bin/bash
2f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
3f6c209b3f409f879305ac9837524b9d34c850de6Li Chenalert() {
4f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  echo "$*" >&2
5f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
6f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
7f6c209b3f409f879305ac9837524b9d34c850de6Li Chendie() {
8f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  echo "ERROR: $@"
9f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  exit 1
10f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
11f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
12f6c209b3f409f879305ac9837524b9d34c850de6Li Chencommand_exists () {
13f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  type "$1" &> /dev/null;
14f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
15f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
16f6c209b3f409f879305ac9837524b9d34c850de6Li Chendtb_to_dts () {
17f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  dtc -O dts -s $1
18f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  if [ $? -ne 0 ]; then
19f6c209b3f409f879305ac9837524b9d34c850de6Li Chen    die "dtb_to_dts $1 failed!"
20f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  fi
21f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
22f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
23f6c209b3f409f879305ac9837524b9d34c850de6Li Chendts_to_dtb () {
24f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  dtc -O dtb -s -@ $1
25f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  if [ $? -ne 0 ]; then
26f6c209b3f409f879305ac9837524b9d34c850de6Li Chen    die "dts_to_dtb $1 failed!"
27f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  fi
28f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
29f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
30f6c209b3f409f879305ac9837524b9d34c850de6Li Chenremove_local_fixups() {
31f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  sed '/__local_fixups__/ {s/^\s*__local_fixups__\s*//; :again;N; s/{[^{}]*};//; /^$/ !b again; d}' $1
32f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
33f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
34f6c209b3f409f879305ac9837524b9d34c850de6Li Chenremove_overlay_stuff() {
35f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  # remove __symbols__, phandle, "linux,phandle" and __local_fixups__
36f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  sed "/__symbols__/,/[}];/d" $1 | sed "/\(^[ \t]*phandle\)/d" | sed "/\(^[ \t]*linux,phandle\)/d" | sed '/^\s*$/d' | remove_local_fixups
37f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
38f6c209b3f409f879305ac9837524b9d34c850de6Li Chen
39f6c209b3f409f879305ac9837524b9d34c850de6Li Chendt_diff () {
40f6c209b3f409f879305ac9837524b9d34c850de6Li Chen  diff -u <(dtb_to_dts "$1" | remove_overlay_stuff) <(dtb_to_dts "$2" | remove_overlay_stuff)
41f6c209b3f409f879305ac9837524b9d34c850de6Li Chen}
42