diff --git a/oem/nuvoton/test_redfish_mcu_fw_update.robot b/oem/nuvoton/test_redfish_mcu_fw_update.robot
index 753117d..2db3d43 100644
--- a/oem/nuvoton/test_redfish_mcu_fw_update.robot
+++ b/oem/nuvoton/test_redfish_mcu_fw_update.robot
@@ -1,111 +1,111 @@
-*** Settings ***
-Documentation            Update firmware on a target MCU via Redifsh.
-
-# Test Parameters:
-# IMAGE_MCU_FILE_PATH    The path to the MCU image file.
-#
-# Firmware update states:
-#     Enabled            Image is installed and either functional or active.
-#     Disabled           Image installation failed or ready for activation.
-#     Updating           Image installation currently in progress.
-
-Resource                 ../lib/resource.robot
-Resource                 ../lib/bmc_redfish_resource.robot
-Resource                 ../lib/boot_utils.robot
-Resource                 ../lib/openbmc_ffdc.robot
-Resource                 ../lib/common_utils.robot
-Resource                 ../lib/code_update_utils.robot
-Resource                 ../lib/dump_utils.robot
-Resource                 ../lib/logging_utils.robot
-Resource                 ../lib/redfish_code_update_utils.robot
-Resource                 ../lib/utils.robot
-Library                  ../lib/gen_robot_valid.py
-Library                  ../lib/tftp_update_utils.py
-
-Suite Setup              Suite Setup Execution
-Suite Teardown           Redfish.Logout
-Test Setup               Printn
-Test Teardown            FFDC On Test Case Fail
-
-Force Tags               Mcu_Code_Update
-
-*** Test Cases ***
-
-Redfish Mcu Code Update With ApplyTime OnReset
-    [Documentation]  Update the firmware image with ApplyTime of OnReset.
-    [Tags]  Redfish_Mcu_Code_Update_With_ApplyTime_OnReset
-    [Template]  Redfish Update Firmware
-
-    # policy
-    OnReset    ${IMAGE_MCU_FILE_PATH_0}
-
-
-Redfish Mcu Code Update With ApplyTime Immediate
-    [Documentation]  Update the firmware image with ApplyTime of Immediate.
-    [Tags]  Redfish_Mcu_Code_Update_With_ApplyTime_Immediate
-    [Template]  Redfish Update Firmware
-
-    # policy
-    Immediate  ${IMAGE_MCU_FILE_PATH_1}
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do the suite setup.
-
-    # Checking for file existence.
-    Valid File Path  IMAGE_MCU_FILE_PATH_0
-    Valid File Path  IMAGE_MCU_FILE_PATH_1
-
-    Redfish.Login
-    Delete All BMC Dump
-    Redfish Purge Event Log
-
-
-Redfish Verify MCU Version
-    [Documentation]  Verify that the version on the MCU is the same as the
-    ...              version in the given image via Redfish.
-    [Arguments]      ${image_file_path}
-
-    # Description of argument(s):
-    # image_file_path   Path to the image tarball.
-
-    # Extract the version from the image tarball on our local system.
-    ${tar_version}=  Get Version Tar  ${image_file_path}
-
-    ${image_info}=  Get Software Inventory State By Version  ${tar_version}
-    ${image_id}=  Get Image Id By Image Info  ${image_info}
-
-    ${mcu_version}=  Redfish.Get Attribute  /redfish/v1/UpdateService/FirmwareInventory/${image_id}  Version
-
-    Valid Value  mcu_version  valid_values=['${tar_version}']
-
-
-Redfish Update Firmware
-    [Documentation]  Update the BMC firmware via redfish interface.
-    [Arguments]  ${apply_time}  ${image_file_path}
-
-    # Description of argument(s):
-    # policy     ApplyTime allowed values (e.g. "OnReset", "Immediate").
-
-    Redfish.Login
-
-    Set ApplyTime  policy=${apply_time}
-
-    Redfish Upload Image  /redfish/v1/UpdateService  ${image_file_path}
-    Sleep  30s
-
-    ${image_version}=  Get Version Tar  ${image_file_path}
-    ${image_info}=  Get Software Inventory State By Version  ${image_version}
-    ${image_id}=  Get Image Id By Image Info  ${image_info}
-
-    Redfish.Login
-    Redfish Verify MCU Version  ${image_file_path}
-
-
-Get Image Id By Image Info
-    [Documentation]  Get image ID from image_info.
-    [Arguments]  ${image_info}
-
-    [Return]  ${image_info["image_id"]}
+*** Settings ***
+Documentation            Update firmware on a target MCU via Redifsh.
+
+# Test Parameters:
+# IMAGE_MCU_FILE_PATH    The path to the MCU image file.
+#
+# Firmware update states:
+#     Enabled            Image is installed and either functional or active.
+#     Disabled           Image installation failed or ready for activation.
+#     Updating           Image installation currently in progress.
+
+Resource                 ../lib/resource.robot
+Resource                 ../lib/bmc_redfish_resource.robot
+Resource                 ../lib/boot_utils.robot
+Resource                 ../lib/openbmc_ffdc.robot
+Resource                 ../lib/common_utils.robot
+Resource                 ../lib/code_update_utils.robot
+Resource                 ../lib/dump_utils.robot
+Resource                 ../lib/logging_utils.robot
+Resource                 ../lib/redfish_code_update_utils.robot
+Resource                 ../lib/utils.robot
+Library                  ../lib/gen_robot_valid.py
+Library                  ../lib/tftp_update_utils.py
+
+Suite Setup              Suite Setup Execution
+Suite Teardown           Redfish.Logout
+Test Setup               Printn
+Test Teardown            FFDC On Test Case Fail
+
+Force Tags               Mcu_Code_Update
+
+*** Test Cases ***
+
+Redfish Mcu Code Update With ApplyTime OnReset
+    [Documentation]  Update the firmware image with ApplyTime of OnReset.
+    [Tags]  Redfish_Mcu_Code_Update_With_ApplyTime_OnReset
+    [Template]  Redfish Update Firmware
+
+    # policy
+    OnReset    ${IMAGE_MCU_FILE_PATH_0}
+
+
+Redfish Mcu Code Update With ApplyTime Immediate
+    [Documentation]  Update the firmware image with ApplyTime of Immediate.
+    [Tags]  Redfish_Mcu_Code_Update_With_ApplyTime_Immediate
+    [Template]  Redfish Update Firmware
+
+    # policy
+    Immediate  ${IMAGE_MCU_FILE_PATH_1}
+
+
+*** Keywords ***
+
+Suite Setup Execution
+    [Documentation]  Do the suite setup.
+
+    # Checking for file existence.
+    Valid File Path  IMAGE_MCU_FILE_PATH_0
+    Valid File Path  IMAGE_MCU_FILE_PATH_1
+
+    Redfish.Login
+    Delete All BMC Dump
+    Redfish Purge Event Log
+
+
+Redfish Verify MCU Version
+    [Documentation]  Verify that the version on the MCU is the same as the
+    ...              version in the given image via Redfish.
+    [Arguments]      ${image_file_path}
+
+    # Description of argument(s):
+    # image_file_path   Path to the image tarball.
+
+    # Extract the version from the image tarball on our local system.
+    ${tar_version}=  Get Version Tar  ${image_file_path}
+
+    ${image_info}=  Get Software Inventory State By Version  ${tar_version}
+    ${image_id}=  Get Image Id By Image Info  ${image_info}
+
+    ${mcu_version}=  Redfish.Get Attribute  /redfish/v1/UpdateService/FirmwareInventory/${image_id}  Version
+
+    Valid Value  mcu_version  valid_values=['${tar_version}']
+
+
+Redfish Update Firmware
+    [Documentation]  Update the BMC firmware via redfish interface.
+    [Arguments]  ${apply_time}  ${image_file_path}
+
+    # Description of argument(s):
+    # policy     ApplyTime allowed values (e.g. "OnReset", "Immediate").
+
+    Redfish.Login
+
+    Set ApplyTime  policy=${apply_time}
+
+    Redfish Upload Image  /redfish/v1/UpdateService  ${image_file_path}
+    Sleep  30s
+
+    ${image_version}=  Get Version Tar  ${image_file_path}
+    ${image_info}=  Get Software Inventory State By Version  ${image_version}
+    ${image_id}=  Get Image Id By Image Info  ${image_info}
+
+    Redfish.Login
+    Redfish Verify MCU Version  ${image_file_path}
+
+
+Get Image Id By Image Info
+    [Documentation]  Get image ID from image_info.
+    [Arguments]  ${image_info}
+
+    [Return]  ${image_info["image_id"]}
