xref: /aosp_15_r20/external/dtc/dtdiff (revision cd60bc56d4bea3af4ec04523e4d71c2b272c8aff)
1*cd60bc56SAndroid Build Coastguard Worker#! /bin/bash
2*cd60bc56SAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0-or-later
3*cd60bc56SAndroid Build Coastguard Worker
4*cd60bc56SAndroid Build Coastguard Worker# This script uses the bash <(...) extension.
5*cd60bc56SAndroid Build Coastguard Worker# If you want to change this to work with a generic /bin/sh, make sure
6*cd60bc56SAndroid Build Coastguard Worker# you fix that.
7*cd60bc56SAndroid Build Coastguard Worker
8*cd60bc56SAndroid Build Coastguard Worker
9*cd60bc56SAndroid Build Coastguard WorkerDTC=dtc
10*cd60bc56SAndroid Build Coastguard Worker
11*cd60bc56SAndroid Build Coastguard Workersource_and_sort () {
12*cd60bc56SAndroid Build Coastguard Worker    DT="$1"
13*cd60bc56SAndroid Build Coastguard Worker    if [ -d "$DT" ]; then
14*cd60bc56SAndroid Build Coastguard Worker	IFORMAT=fs
15*cd60bc56SAndroid Build Coastguard Worker    elif [ -f "$DT" ]; then
16*cd60bc56SAndroid Build Coastguard Worker	case "$DT" in
17*cd60bc56SAndroid Build Coastguard Worker	    *.dts)
18*cd60bc56SAndroid Build Coastguard Worker		IFORMAT=dts
19*cd60bc56SAndroid Build Coastguard Worker		;;
20*cd60bc56SAndroid Build Coastguard Worker	    *.dtb)
21*cd60bc56SAndroid Build Coastguard Worker		IFORMAT=dtb
22*cd60bc56SAndroid Build Coastguard Worker		;;
23*cd60bc56SAndroid Build Coastguard Worker	esac
24*cd60bc56SAndroid Build Coastguard Worker    fi
25*cd60bc56SAndroid Build Coastguard Worker
26*cd60bc56SAndroid Build Coastguard Worker    if [ -z "$IFORMAT" ]; then
27*cd60bc56SAndroid Build Coastguard Worker	echo "Unrecognized format for $DT" >&2
28*cd60bc56SAndroid Build Coastguard Worker	exit 2
29*cd60bc56SAndroid Build Coastguard Worker    fi
30*cd60bc56SAndroid Build Coastguard Worker
31*cd60bc56SAndroid Build Coastguard Worker    $DTC -I $IFORMAT -O dts -qq -f -s -o - "$DT"
32*cd60bc56SAndroid Build Coastguard Worker}
33*cd60bc56SAndroid Build Coastguard Worker
34*cd60bc56SAndroid Build Coastguard Workerif [ $# != 2 ]; then
35*cd60bc56SAndroid Build Coastguard Worker    echo "Usage: dtdiff <device tree> <device tree>" >&2
36*cd60bc56SAndroid Build Coastguard Worker    exit 1
37*cd60bc56SAndroid Build Coastguard Workerfi
38*cd60bc56SAndroid Build Coastguard Worker
39*cd60bc56SAndroid Build Coastguard Workerdiff -u <(source_and_sort "$1") <(source_and_sort "$2")
40