meta-phosphor: npcm8xx.bbclass: add SA FW support mimic NO TIP feature

SA (Stand Alone) is a special TIP_FW for mimic NO TIP feature on TIP
devices, i.e. concatenated file image_no_tip + SA FW for mimic NO TIP

For TIP device and no need TIP_FW that is using
"BootBlock_BL31_Tee_Uboot_no_tip_SA.bin" for booting up.

For real NO TIP device that is using
"BootBlock_BL31_Tee_Uboot_no_tip.bin" for booting up.

Tested:
Set TIP_IMAGE = False and SA_TIP_IMAGE = True,
TIP device and can boot up.

Set TIP_IMAGE = False and SA_TIP_IMAGE = False,
NO_TIP device and can boot up.

Signed-off-by: Tim Lee <timlee660101@gmail.com>
Change-Id: I395504c67e054f1e1f08e674e7dbb1f3c8a85d8c
diff --git a/meta-phosphor/classes/image_types_phosphor_nuvoton_npcm8xx.bbclass b/meta-phosphor/classes/image_types_phosphor_nuvoton_npcm8xx.bbclass
index 9b6db79..03500fa 100644
--- a/meta-phosphor/classes/image_types_phosphor_nuvoton_npcm8xx.bbclass
+++ b/meta-phosphor/classes/image_types_phosphor_nuvoton_npcm8xx.bbclass
@@ -7,10 +7,12 @@
 KMT_TIPFW_BB_BL31_BINARY = "Kmt_TipFw_BootBlock_BL31.bin"
 KMT_TIPFW_BB_BL31_TEE_BINARY = "Kmt_TipFw_BootBlock_BL31_Tee.bin"
 KMT_TIPFW_BB_UBOOT_BINARY = "u-boot.bin.merged"
+SA_KMT_TIPFW_BINARY := "SA_Kmt_TipFwL0.bin"
 
 BB_BL31_BINARY = "BootBlock_BL31_no_tip.bin"
 BB_BL31_TEE_BINARY = "BootBlock_BL31_Tee_no_tip.bin"
-BB_BL31_TEE_UBOOT_BINARY = "u-boot.bin.merged"
+BB_BL31_TEE_UBOOT_BINARY = "BootBlock_BL31_Tee_Uboot_no_tip.bin"
+BB_BL31_TEE_UBOOT_SA_BINARY = "BootBlock_BL31_Tee_Uboot_no_tip_SA.bin"
 
 FULL_SUFFIX = "full"
 MERGED_SUFFIX = "merged"
@@ -157,6 +159,7 @@
 
 python do_merge_bootloaders() {
     TIP_IMAGE = d.getVar('TIP_IMAGE', True)
+    SA_TIP_IMAGE = d.getVar('SA_TIP_IMAGE', True)
     def Merge_bin_files_and_pad(inF1, inF2, outF, align, align_end):
         padding_size = 0
         padding_size_end = 0
@@ -217,10 +220,22 @@
         os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('UBOOT_HEADER_BINARY',True)),
         os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_BINARY',True)),
         int(d.getVar('UBOOT_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
+
+        if SA_TIP_IMAGE == "True":
+            Merge_bin_files_and_pad(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_BINARY',True)),
+            os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('SA_KMT_TIPFW_BINARY',True)),
+            os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_SA_BINARY',True)),
+            int(d.getVar('SA_ALIGN', True)), int(d.getVar('ALIGN_END', True)))
+
+            os.rename(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_SA_BINARY',True)),
+            os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_UBOOT_BINARY',True)))
+        else:
+            os.rename(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('BB_BL31_TEE_UBOOT_BINARY',True)),
+            os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), '%s' % d.getVar('KMT_TIPFW_BB_UBOOT_BINARY',True)))
 }
 
 do_pad_binary[depends] += " \
-    ${@'npcm8xx-tip-fw:do_deploy' if d.getVar('TIP_IMAGE', True) == 'True' else ''} \
+    ${@'npcm8xx-tip-fw:do_deploy' if d.getVar('TIP_IMAGE', True) == 'True' or d.getVar('SA_TIP_IMAGE', True) == 'True' else ''} \
     npcm8xx-bootblock:do_deploy \
     u-boot-nuvoton:do_deploy \
     trusted-firmware-a:do_deploy \