diff --git a/meta-phosphor/classes/fit-image.bbclass b/meta-phosphor/classes/fit-image.bbclass
index 227fe47..7d23f44 100644
--- a/meta-phosphor/classes/fit-image.bbclass
+++ b/meta-phosphor/classes/fit-image.bbclass
@@ -68,7 +68,7 @@
 #
 # $1 ... .its filename
 fitimage_emit_fit_header() {
-	cat << EOF >> $1
+    cat << EOF >> $1
 /dts-v1/;
 
 / {
@@ -87,30 +87,30 @@
 #                          fitend     - fitimage end
 #
 fitimage_emit_section_maint() {
-	case $2 in
-	imagestart)
-		cat << EOF >> $1
+    case $2 in
+    imagestart)
+        cat << EOF >> $1
 
         images {
 EOF
-	;;
-	confstart)
-		cat << EOF >> $1
+    ;;
+    confstart)
+        cat << EOF >> $1
 
         configurations {
 EOF
-	;;
-	sectend)
-		cat << EOF >> $1
-	};
+    ;;
+    sectend)
+        cat << EOF >> $1
+    };
 EOF
-	;;
-	fitend)
-		cat << EOF >> $1
+    ;;
+    fitend)
+        cat << EOF >> $1
 };
 EOF
-	;;
-	esac
+    ;;
+    esac
 }
 
 
@@ -123,17 +123,17 @@
 # $4 ... Compression type
 fitimage_emit_section_kernel() {
 
-	kernel_csum="${FIT_HASH_ALG}"
-	kernel_sign_algo="${FIT_SIGN_ALG}"
-	kernel_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
+    kernel_csum="${FIT_HASH_ALG}"
+    kernel_sign_algo="${FIT_SIGN_ALG}"
+    kernel_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
 
-	ENTRYPOINT="${UBOOT_ENTRYPOINT}"
-	if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
-		ENTRYPOINT=`${HOST_PREFIX}nm vmlinux | \
-			awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'`
-	fi
+    ENTRYPOINT="${UBOOT_ENTRYPOINT}"
+    if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then
+        ENTRYPOINT=`${HOST_PREFIX}nm vmlinux | \
+            awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'`
+    fi
 
-	cat << EOF >> $1
+    cat << EOF >> $1
                 kernel-$2 {
                         description = "Linux kernel";
                         data = /incbin/("$3");
@@ -149,16 +149,16 @@
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$kernel_sign_keyname" ] ; then
-		sed -i '$ d' $1
-		cat << EOF >> $1
+    if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$kernel_sign_keyname" ] ; then
+        sed -i '$ d' $1
+        cat << EOF >> $1
                         signature-1 {
                                 algo = "$kernel_csum,$kernel_sign_algo";
                                 key-name-hint = "$kernel_sign_keyname";
                         };
                 };
 EOF
-	fi
+    fi
 }
 
 #
@@ -169,20 +169,20 @@
 # $3 ... Path to DTB image
 fitimage_emit_section_dtb() {
 
-	dtb_csum="${FIT_HASH_ALG}"
-	dtb_sign_algo="${FIT_SIGN_ALG}"
-	dtb_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
+    dtb_csum="${FIT_HASH_ALG}"
+    dtb_sign_algo="${FIT_SIGN_ALG}"
+    dtb_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
 
-	dtb_loadline=""
-	dtb_ext=${DTB##*.}
-	if [ "${dtb_ext}" = "dtbo" ]; then
-		if [ -n "${UBOOT_DTBO_LOADADDRESS}" ]; then
-			dtb_loadline="load = <${UBOOT_DTBO_LOADADDRESS}>;"
-		fi
-	elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then
-		dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;"
-	fi
-	cat << EOF >> $1
+    dtb_loadline=""
+    dtb_ext=${DTB##*.}
+    if [ "${dtb_ext}" = "dtbo" ]; then
+        if [ -n "${UBOOT_DTBO_LOADADDRESS}" ]; then
+            dtb_loadline="load = <${UBOOT_DTBO_LOADADDRESS}>;"
+        fi
+    elif [ -n "${UBOOT_DTB_LOADADDRESS}" ]; then
+        dtb_loadline="load = <${UBOOT_DTB_LOADADDRESS}>;"
+    fi
+    cat << EOF >> $1
                 fdt-$2 {
                         description = "Flattened Device Tree blob";
                         data = /incbin/("$3");
@@ -196,16 +196,16 @@
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$dtb_sign_keyname" ] ; then
-		sed -i '$ d' $1
-		cat << EOF >> $1
+    if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$dtb_sign_keyname" ] ; then
+        sed -i '$ d' $1
+        cat << EOF >> $1
                         signature-1 {
                                 algo = "$dtb_csum,$dtb_sign_algo";
                                 key-name-hint = "$dtb_sign_keyname";
                         };
                 };
 EOF
-	fi
+    fi
 }
 
 #
@@ -216,9 +216,9 @@
 # $3 ... Path to boot script image
 fitimage_emit_section_boot_script() {
 
-	bootscr_csum="${FIT_HASH_ALG}"
-	bootscr_sign_algo="${FIT_SIGN_ALG}"
-	bootscr_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
+    bootscr_csum="${FIT_HASH_ALG}"
+    bootscr_sign_algo="${FIT_SIGN_ALG}"
+    bootscr_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
 
         cat << EOF >> $1
                 bootscr-$2 {
@@ -233,16 +233,16 @@
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$bootscr_sign_keyname" ] ; then
-		sed -i '$ d' $1
-		cat << EOF >> $1
+    if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$bootscr_sign_keyname" ] ; then
+        sed -i '$ d' $1
+        cat << EOF >> $1
                         signature-1 {
                                 algo = "$bootscr_csum,$bootscr_sign_algo";
                                 key-name-hint = "$bootscr_sign_keyname";
                         };
                 };
 EOF
-	fi
+    fi
 }
 
 #
@@ -253,9 +253,9 @@
 # $3 ... Path to setup image
 fitimage_emit_section_setup() {
 
-	setup_csum="${FIT_HASH_ALG}"
+    setup_csum="${FIT_HASH_ALG}"
 
-	cat << EOF >> $1
+    cat << EOF >> $1
                 setup-$2 {
                         description = "Linux setup.bin";
                         data = /incbin/("$3");
@@ -280,20 +280,20 @@
 # $3 ... Path to ramdisk image
 fitimage_emit_section_ramdisk() {
 
-	ramdisk_csum="${FIT_HASH_ALG}"
-	ramdisk_sign_algo="${FIT_SIGN_ALG}"
-	ramdisk_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
-	ramdisk_loadline=""
-	ramdisk_entryline=""
+    ramdisk_csum="${FIT_HASH_ALG}"
+    ramdisk_sign_algo="${FIT_SIGN_ALG}"
+    ramdisk_sign_keyname="${UBOOT_SIGN_IMG_KEYNAME}"
+    ramdisk_loadline=""
+    ramdisk_entryline=""
 
-	if [ -n "${UBOOT_RD_LOADADDRESS}" ]; then
-		ramdisk_loadline="load = <${UBOOT_RD_LOADADDRESS}>;"
-	fi
-	if [ -n "${UBOOT_RD_ENTRYPOINT}" ]; then
-		ramdisk_entryline="entry = <${UBOOT_RD_ENTRYPOINT}>;"
-	fi
+    if [ -n "${UBOOT_RD_LOADADDRESS}" ]; then
+        ramdisk_loadline="load = <${UBOOT_RD_LOADADDRESS}>;"
+    fi
+    if [ -n "${UBOOT_RD_ENTRYPOINT}" ]; then
+        ramdisk_entryline="entry = <${UBOOT_RD_ENTRYPOINT}>;"
+    fi
 
-	cat << EOF >> $1
+    cat << EOF >> $1
                 ramdisk-$2 {
                         description = "${INITRAMFS_IMAGE}";
                         data = /incbin/("$3");
@@ -309,16 +309,16 @@
                 };
 EOF
 
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$ramdisk_sign_keyname" ] ; then
-		sed -i '$ d' $1
-		cat << EOF >> $1
+    if [ "${UBOOT_SIGN_ENABLE}" = "1" -a "${FIT_SIGN_INDIVIDUAL}" = "1" -a -n "$ramdisk_sign_keyname" ] ; then
+        sed -i '$ d' $1
+        cat << EOF >> $1
                         signature-1 {
                                 algo = "$ramdisk_csum,$ramdisk_sign_algo";
                                 key-name-hint = "$ramdisk_sign_keyname";
                         };
                 };
 EOF
-	fi
+    fi
 }
 
 #
@@ -327,19 +327,19 @@
 # $1 ... file that's a potential symlink
 # $2 ... expected parent directory
 symlink_points_below() {
-	file="$2/$1"
-	dir=$2
+    file="$2/$1"
+    dir=$2
 
-	if ! [ -L "$file" ]; then
-		return
-	fi
+    if ! [ -L "$file" ]; then
+        return
+    fi
 
-	realpath="$(realpath --relative-to=$dir $file)"
-	if [ -z "${realpath%%../*}" ]; then
-		return
-	fi
+    realpath="$(realpath --relative-to=$dir $file)"
+    if [ -z "${realpath%%../*}" ]; then
+        return
+    fi
 
-	echo "$realpath"
+    echo "$realpath"
 }
 
 #
@@ -354,88 +354,88 @@
 # $7 ... default flag
 fitimage_emit_section_config() {
 
-	conf_csum="${FIT_HASH_ALG}"
-	conf_sign_algo="${FIT_SIGN_ALG}"
-	conf_padding_algo="${FIT_PAD_ALG}"
-	if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then
-		conf_sign_keyname="${UBOOT_SIGN_KEYNAME}"
-	fi
+    conf_csum="${FIT_HASH_ALG}"
+    conf_sign_algo="${FIT_SIGN_ALG}"
+    conf_padding_algo="${FIT_PAD_ALG}"
+    if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then
+        conf_sign_keyname="${UBOOT_SIGN_KEYNAME}"
+    fi
 
-	its_file="$1"
-	kernel_id="$2"
-	dtb_image="$3"
-	ramdisk_id="$4"
-	bootscr_id="$5"
-	config_id="$6"
-	default_flag="$7"
+    its_file="$1"
+    kernel_id="$2"
+    dtb_image="$3"
+    ramdisk_id="$4"
+    bootscr_id="$5"
+    config_id="$6"
+    default_flag="$7"
 
-	# Test if we have any DTBs at all
-	sep=""
-	conf_desc=""
-	conf_node="${FIT_CONF_PREFIX}"
-	kernel_line=""
-	fdt_line=""
-	ramdisk_line=""
-	bootscr_line=""
-	setup_line=""
-	default_line=""
+    # Test if we have any DTBs at all
+    sep=""
+    conf_desc=""
+    conf_node="${FIT_CONF_PREFIX}"
+    kernel_line=""
+    fdt_line=""
+    ramdisk_line=""
+    bootscr_line=""
+    setup_line=""
+    default_line=""
 
-	dtb_image_sect=$(symlink_points_below $dtb_image "${EXTERNAL_KERNEL_DEVICETREE}")
-	if [ -z "$dtb_image_sect" ]; then
-		dtb_image_sect=$dtb_image
-	fi
+    dtb_image_sect=$(symlink_points_below $dtb_image "${EXTERNAL_KERNEL_DEVICETREE}")
+    if [ -z "$dtb_image_sect" ]; then
+        dtb_image_sect=$dtb_image
+    fi
 
-	dtb_image=$(echo $dtb_image | tr '/' '_')
-	dtb_image_sect=$(echo "${dtb_image_sect}" | tr '/' '_')
+    dtb_image=$(echo $dtb_image | tr '/' '_')
+    dtb_image_sect=$(echo "${dtb_image_sect}" | tr '/' '_')
 
-	# conf node name is selected based on dtb ID if it is present,
-	# otherwise its selected based on kernel ID
-	if [ -n "$dtb_image" ]; then
-		conf_node=$conf_node$dtb_image
-	else
-		conf_node=$conf_node$kernel_id
-	fi
+    # conf node name is selected based on dtb ID if it is present,
+    # otherwise its selected based on kernel ID
+    if [ -n "$dtb_image" ]; then
+        conf_node=$conf_node$dtb_image
+    else
+        conf_node=$conf_node$kernel_id
+    fi
 
-	if [ -n "$kernel_id" ]; then
-		conf_desc="Linux kernel"
-		sep=", "
-		kernel_line="kernel = \"kernel-$kernel_id\";"
-	fi
+    if [ -n "$kernel_id" ]; then
+        conf_desc="Linux kernel"
+        sep=", "
+        kernel_line="kernel = \"kernel-$kernel_id\";"
+    fi
 
-	if [ -n "$dtb_image" ]; then
-		conf_desc="$conf_desc${sep}FDT blob"
-		sep=", "
-		fdt_line="fdt = \"fdt-$dtb_image_sect\";"
-	fi
+    if [ -n "$dtb_image" ]; then
+        conf_desc="$conf_desc${sep}FDT blob"
+        sep=", "
+        fdt_line="fdt = \"fdt-$dtb_image_sect\";"
+    fi
 
-	if [ -n "$ramdisk_id" ]; then
-		conf_desc="$conf_desc${sep}ramdisk"
-		sep=", "
-		ramdisk_line="ramdisk = \"ramdisk-$ramdisk_id\";"
-	fi
+    if [ -n "$ramdisk_id" ]; then
+        conf_desc="$conf_desc${sep}ramdisk"
+        sep=", "
+        ramdisk_line="ramdisk = \"ramdisk-$ramdisk_id\";"
+    fi
 
-	if [ -n "$bootscr_id" ]; then
-		conf_desc="$conf_desc${sep}u-boot script"
-		sep=", "
-		bootscr_line="bootscr = \"bootscr-$bootscr_id\";"
-	fi
+    if [ -n "$bootscr_id" ]; then
+        conf_desc="$conf_desc${sep}u-boot script"
+        sep=", "
+        bootscr_line="bootscr = \"bootscr-$bootscr_id\";"
+    fi
 
-	if [ -n "$config_id" ]; then
-		conf_desc="$conf_desc${sep}setup"
-		setup_line="setup = \"setup-$config_id\";"
-	fi
+    if [ -n "$config_id" ]; then
+        conf_desc="$conf_desc${sep}setup"
+        setup_line="setup = \"setup-$config_id\";"
+    fi
 
-	if [ "$default_flag" = "1" ]; then
-		# default node is selected based on dtb ID if it is present,
-		# otherwise its selected based on kernel ID
-		if [ -n "$dtb_image" ]; then
-			default_line="default = \"${FIT_CONF_PREFIX}$dtb_image\";"
-		else
-			default_line="default = \"${FIT_CONF_PREFIX}$kernel_id\";"
-		fi
-	fi
+    if [ "$default_flag" = "1" ]; then
+        # default node is selected based on dtb ID if it is present,
+        # otherwise its selected based on kernel ID
+        if [ -n "$dtb_image" ]; then
+            default_line="default = \"${FIT_CONF_PREFIX}$dtb_image\";"
+        else
+            default_line="default = \"${FIT_CONF_PREFIX}$kernel_id\";"
+        fi
+    fi
 
-	cat << EOF >> $its_file
+    cat << EOF >> $its_file
                 $default_line
                 $conf_node {
                         description = "$default_flag $conf_desc";
@@ -449,38 +449,38 @@
                         };
 EOF
 
-	if [ -n "$conf_sign_keyname" ] ; then
+    if [ -n "$conf_sign_keyname" ] ; then
 
-		sign_line="sign-images = "
-		sep=""
+        sign_line="sign-images = "
+        sep=""
 
-		if [ -n "$kernel_id" ]; then
-			sign_line="$sign_line${sep}\"kernel\""
-			sep=", "
-		fi
+        if [ -n "$kernel_id" ]; then
+            sign_line="$sign_line${sep}\"kernel\""
+            sep=", "
+        fi
 
-		if [ -n "$dtb_image" ]; then
-			sign_line="$sign_line${sep}\"fdt\""
-			sep=", "
-		fi
+        if [ -n "$dtb_image" ]; then
+            sign_line="$sign_line${sep}\"fdt\""
+            sep=", "
+        fi
 
-		if [ -n "$ramdisk_id" ]; then
-			sign_line="$sign_line${sep}\"ramdisk\""
-			sep=", "
-		fi
+        if [ -n "$ramdisk_id" ]; then
+            sign_line="$sign_line${sep}\"ramdisk\""
+            sep=", "
+        fi
 
-		if [ -n "$bootscr_id" ]; then
-			sign_line="$sign_line${sep}\"bootscr\""
-			sep=", "
-		fi
+        if [ -n "$bootscr_id" ]; then
+            sign_line="$sign_line${sep}\"bootscr\""
+            sep=", "
+        fi
 
-		if [ -n "$config_id" ]; then
-			sign_line="$sign_line${sep}\"setup\""
-		fi
+        if [ -n "$config_id" ]; then
+            sign_line="$sign_line${sep}\"setup\""
+        fi
 
-		sign_line="$sign_line;"
+        sign_line="$sign_line;"
 
-		cat << EOF >> $its_file
+        cat << EOF >> $its_file
                         signature-1 {
                                 algo = "$conf_csum,$conf_sign_algo";
                                 key-name-hint = "$conf_sign_keyname";
@@ -488,9 +488,9 @@
                                 $sign_line
                         };
 EOF
-	fi
+    fi
 
-	cat << EOF >> $its_file
+    cat << EOF >> $its_file
                 };
 EOF
 }
@@ -502,114 +502,114 @@
 # $2 ... fitImage name
 # $3 ... include ramdisk
 fitimage_assemble() {
-	kernelcount=1
-	dtbcount=""
-	DTBS=""
-	ramdiskcount=$3
-	setupcount=""
-	bootscr_id=""
-	rm -f $1 ${KERNEL_OUTPUT_DIR}/$2
+    kernelcount=1
+    dtbcount=""
+    DTBS=""
+    ramdiskcount=$3
+    setupcount=""
+    bootscr_id=""
+    rm -f $1 ${KERNEL_OUTPUT_DIR}/$2
 
-	if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then
-		bbfatal "Keys used to sign images and configuration nodes must be different."
-	fi
+    if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then
+        bbfatal "Keys used to sign images and configuration nodes must be different."
+    fi
 
-	fitimage_emit_fit_header $1
+    fitimage_emit_fit_header $1
 
-	#
-	# Step 1: Prepare a kernel image section.
-	#
-	fitimage_emit_section_maint $1 imagestart
+    #
+    # Step 1: Prepare a kernel image section.
+    #
+    fitimage_emit_section_maint $1 imagestart
 
-	uboot_prep_kimage
-	fitimage_emit_section_kernel $1 $kernelcount linux.bin "$linux_comp"
+    uboot_prep_kimage
+    fitimage_emit_section_kernel $1 $kernelcount linux.bin "$linux_comp"
 
-	#
-	# Step 2: Prepare a DTB image section
-	#
+    #
+    # Step 2: Prepare a DTB image section
+    #
 
-	if [ -n "${KERNEL_DEVICETREE}" ]; then
-		dtbcount=1
-		for DTB in ${KERNEL_DEVICETREE}; do
-			if echo $DTB | grep -q '/dts/'; then
-				bbwarn "$DTB contains the full path to the the dts file, but only the dtb name should be used."
-				DTB=`basename $DTB | sed 's,\.dts$,.dtb,g'`
-			fi
+    if [ -n "${KERNEL_DEVICETREE}" ]; then
+        dtbcount=1
+        for DTB in ${KERNEL_DEVICETREE}; do
+            if echo $DTB | grep -q '/dts/'; then
+                bbwarn "$DTB contains the full path to the the dts file, but only the dtb name should be used."
+                DTB=`basename $DTB | sed 's,\.dts$,.dtb,g'`
+            fi
 
-			# Skip ${DTB} if it's also provided in ${EXTERNAL_KERNEL_DEVICETREE}
-			if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -s ${EXTERNAL_KERNEL_DEVICETREE}/${DTB} ]; then
-				continue
-			fi
+            # Skip ${DTB} if it's also provided in ${EXTERNAL_KERNEL_DEVICETREE}
+            if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ] && [ -s ${EXTERNAL_KERNEL_DEVICETREE}/${DTB} ]; then
+                continue
+            fi
 
-			DTB_PATH="${KERNEL_OUTPUT_DIR}/dts/$DTB"
-			if [ ! -e "$DTB_PATH" ]; then
-				DTB_PATH="${KERNEL_OUTPUT_DIR}/$DTB"
-			fi
+            DTB_PATH="${KERNEL_OUTPUT_DIR}/dts/$DTB"
+            if [ ! -e "$DTB_PATH" ]; then
+                DTB_PATH="${KERNEL_OUTPUT_DIR}/$DTB"
+            fi
 
-			# Skip DTB if we've picked it up previously
-			echo "$DTBS" | tr ' ' '\n' | grep -xq "$DTB" && continue
+            # Skip DTB if we've picked it up previously
+            echo "$DTBS" | tr ' ' '\n' | grep -xq "$DTB" && continue
 
-			DTBS="$DTBS $DTB"
-			DTB=$(echo $DTB | tr '/' '_')
-			fitimage_emit_section_dtb $1 $DTB $DTB_PATH
-		done
-	fi
+            DTBS="$DTBS $DTB"
+            DTB=$(echo $DTB | tr '/' '_')
+            fitimage_emit_section_dtb $1 $DTB $DTB_PATH
+        done
+    fi
 
-	if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then
-		dtbcount=1
-		for DTB in $(find "${EXTERNAL_KERNEL_DEVICETREE}" \( -name '*.dtb' -o -name '*.dtbo' \) -printf '%P\n' | sort); do
-			# Skip DTB if we've picked it up previously
-			echo "$DTBS" | tr ' ' '\n' | grep -xq "$DTB" && continue
+    if [ -n "${EXTERNAL_KERNEL_DEVICETREE}" ]; then
+        dtbcount=1
+        for DTB in $(find "${EXTERNAL_KERNEL_DEVICETREE}" \( -name '*.dtb' -o -name '*.dtbo' \) -printf '%P\n' | sort); do
+            # Skip DTB if we've picked it up previously
+            echo "$DTBS" | tr ' ' '\n' | grep -xq "$DTB" && continue
 
-			DTBS="$DTBS $DTB"
+            DTBS="$DTBS $DTB"
 
-			# Also skip if a symlink. We'll later have each config section point at it
-			[ $(symlink_points_below $DTB "${EXTERNAL_KERNEL_DEVICETREE}") ] && continue
+            # Also skip if a symlink. We'll later have each config section point at it
+            [ $(symlink_points_below $DTB "${EXTERNAL_KERNEL_DEVICETREE}") ] && continue
 
-			DTB=$(echo $DTB | tr '/' '_')
-			fitimage_emit_section_dtb $1 $DTB "${EXTERNAL_KERNEL_DEVICETREE}/$DTB"
-		done
-	fi
+            DTB=$(echo $DTB | tr '/' '_')
+            fitimage_emit_section_dtb $1 $DTB "${EXTERNAL_KERNEL_DEVICETREE}/$DTB"
+        done
+    fi
 
-	#
-	# Step 3: Prepare a u-boot script section
-	#
+    #
+    # Step 3: Prepare a u-boot script section
+    #
 
-	if [ -n "${UBOOT_ENV}" ] && [ -d "${STAGING_DIR_HOST}/boot" ]; then
-		if [ -e "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY}" ]; then
-			cp ${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} ${B}
-			bootscr_id="${UBOOT_ENV_BINARY}"
-			fitimage_emit_section_boot_script $1 "$bootscr_id" ${UBOOT_ENV_BINARY}
-		else
-			bbwarn "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} not found."
-		fi
-	fi
+    if [ -n "${UBOOT_ENV}" ] && [ -d "${STAGING_DIR_HOST}/boot" ]; then
+        if [ -e "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY}" ]; then
+            cp ${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} ${B}
+            bootscr_id="${UBOOT_ENV_BINARY}"
+            fitimage_emit_section_boot_script $1 "$bootscr_id" ${UBOOT_ENV_BINARY}
+        else
+            bbwarn "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} not found."
+        fi
+    fi
 
-	#
-	# Step 4: Prepare a setup section. (For x86)
-	#
-	if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then
-		setupcount=1
-		fitimage_emit_section_setup $1 $setupcount ${KERNEL_OUTPUT_DIR}/setup.bin
-	fi
+    #
+    # Step 4: Prepare a setup section. (For x86)
+    #
+    if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then
+        setupcount=1
+        fitimage_emit_section_setup $1 $setupcount ${KERNEL_OUTPUT_DIR}/setup.bin
+    fi
 
-	#
-	# Step 5: Prepare a ramdisk section.
-	#
-	if [ "x${ramdiskcount}" = "x1" ] && [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
-		# Find and use the first initramfs image archive type we find
-		found=
-		for img in ${FIT_SUPPORTED_INITRAMFS_FSTYPES}; do
-			initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img"
-			if [ -e "$initramfs_path" ]; then
-				bbnote "Found initramfs image: $initramfs_path"
-				found=true
-				fitimage_emit_section_ramdisk $1 "$ramdiskcount" "$initramfs_path"
-				break
-			else
-				bbnote "Did not find initramfs image: $initramfs_path"
-			fi
-		done
+    #
+    # Step 5: Prepare a ramdisk section.
+    #
+    if [ "x${ramdiskcount}" = "x1" ] && [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then
+        # Find and use the first initramfs image archive type we find
+        found=
+        for img in ${FIT_SUPPORTED_INITRAMFS_FSTYPES}; do
+            initramfs_path="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE_NAME}.$img"
+            if [ -e "$initramfs_path" ]; then
+                bbnote "Found initramfs image: $initramfs_path"
+                found=true
+                fitimage_emit_section_ramdisk $1 "$ramdiskcount" "$initramfs_path"
+                break
+            else
+                bbnote "Did not find initramfs image: $initramfs_path"
+            fi
+        done
 
         if [ -z "$found" ] && [ -e ${INITRAMFS_IMAGE} ]; then
             found=true
@@ -617,69 +617,69 @@
             fitimage_emit_section_ramdisk $1 "$ramdiskcount" "${INITRAMFS_IMAGE}"
         fi
 
-		if [ -z "$found" ]; then
-			bbfatal "Could not find a valid initramfs type for ${INITRAMFS_IMAGE_NAME}, the supported types are: ${FIT_SUPPORTED_INITRAMFS_FSTYPES}"
-		fi
-	fi
+        if [ -z "$found" ]; then
+            bbfatal "Could not find a valid initramfs type for ${INITRAMFS_IMAGE_NAME}, the supported types are: ${FIT_SUPPORTED_INITRAMFS_FSTYPES}"
+        fi
+    fi
 
-	fitimage_emit_section_maint $1 sectend
+    fitimage_emit_section_maint $1 sectend
 
-	# Force the first Kernel and DTB in the default config
-	kernelcount=1
-	if [ -n "$dtbcount" ]; then
-		dtbcount=1
-	fi
+    # Force the first Kernel and DTB in the default config
+    kernelcount=1
+    if [ -n "$dtbcount" ]; then
+        dtbcount=1
+    fi
 
-	#
-	# Step 6: Prepare a configurations section
-	#
-	fitimage_emit_section_maint $1 confstart
+    #
+    # Step 6: Prepare a configurations section
+    #
+    fitimage_emit_section_maint $1 confstart
 
-	# kernel-fitimage.bbclass currently only supports a single kernel (no less or
-	# more) to be added to the FIT image along with 0 or more device trees and
-	# 0 or 1 ramdisk.
+    # kernel-fitimage.bbclass currently only supports a single kernel (no less or
+    # more) to be added to the FIT image along with 0 or more device trees and
+    # 0 or 1 ramdisk.
         # It is also possible to include an initramfs bundle (kernel and rootfs in one binary)
         # When the initramfs bundle is used ramdisk is disabled.
-	# If a device tree is to be part of the FIT image, then select
-	# the default configuration to be used is based on the dtbcount. If there is
-	# no dtb present than select the default configuation to be based on
-	# the kernelcount.
-	if [ -n "$DTBS" ]; then
-		i=1
-		for DTB in ${DTBS}; do
-			dtb_ext=${DTB##*.}
-			if [ "$dtb_ext" = "dtbo" ]; then
-				fitimage_emit_section_config $1 "" "$DTB" "" "$bootscr_id" "" "`expr $i = $dtbcount`"
-			else
-				fitimage_emit_section_config $1 $kernelcount "$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`"
-			fi
-			i=`expr $i + 1`
-		done
-	else
-		defaultconfigcount=1
-		fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" "$bootscr_id"  "$setupcount" $defaultconfigcount
-	fi
+    # If a device tree is to be part of the FIT image, then select
+    # the default configuration to be used is based on the dtbcount. If there is
+    # no dtb present than select the default configuation to be based on
+    # the kernelcount.
+    if [ -n "$DTBS" ]; then
+        i=1
+        for DTB in ${DTBS}; do
+            dtb_ext=${DTB##*.}
+            if [ "$dtb_ext" = "dtbo" ]; then
+                fitimage_emit_section_config $1 "" "$DTB" "" "$bootscr_id" "" "`expr $i = $dtbcount`"
+            else
+                fitimage_emit_section_config $1 $kernelcount "$DTB" "$ramdiskcount" "$bootscr_id" "$setupcount" "`expr $i = $dtbcount`"
+            fi
+            i=`expr $i + 1`
+        done
+    else
+        defaultconfigcount=1
+        fitimage_emit_section_config $1 $kernelcount "" "$ramdiskcount" "$bootscr_id"  "$setupcount" $defaultconfigcount
+    fi
 
-	fitimage_emit_section_maint $1 sectend
+    fitimage_emit_section_maint $1 sectend
 
-	fitimage_emit_section_maint $1 fitend
+    fitimage_emit_section_maint $1 fitend
 
-	#
-	# Step 7: Assemble the image
-	#
-	${UBOOT_MKIMAGE} \
-		${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-		-f $1 \
-		${KERNEL_OUTPUT_DIR}/$2
+    #
+    # Step 7: Assemble the image
+    #
+    ${UBOOT_MKIMAGE} \
+        ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
+        -f $1 \
+        ${KERNEL_OUTPUT_DIR}/$2
 
-	#
-	# Step 8: Sign the image
-	#
-	if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then
-		${UBOOT_MKIMAGE_SIGN} \
-			${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
-			-F -k "${UBOOT_SIGN_KEYDIR}" \
-			-r ${KERNEL_OUTPUT_DIR}/$2 \
-			${UBOOT_MKIMAGE_SIGN_ARGS}
-	fi
+    #
+    # Step 8: Sign the image
+    #
+    if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then
+        ${UBOOT_MKIMAGE_SIGN} \
+            ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
+            -F -k "${UBOOT_SIGN_KEYDIR}" \
+            -r ${KERNEL_OUTPUT_DIR}/$2 \
+            ${UBOOT_MKIMAGE_SIGN_ARGS}
+    fi
 }
