util/: Replace GPLv2 boiler plate with SPDX header
[coreboot.git] / util / mma / mma_setup_test.sh
blob9680d2e8c629672a1f368fbe8fdfc275247ebfc9
1 #!/usr/bin/env bash
2 # This file is part of the coreboot project.
4 # SPDX-License-Identifier: GPL-2.0-only
6 file_type_mma="mma"
7 flashrom_temp_image=/tmp/flash_image_mma.bin
8 mma_test_metadata_bin=mma_test_metadata.bin
9 mma_test_metadata_bin_path=/tmp/"${mma_test_metadata_bin}"
11 printf_separator() {
12 printf '=%.0s' {1..80}
13 printf '\n'
16 show_usage() {
17 printf "MMA blobs version : 2.1018\n"
18 printf "usage: $(basename "${0}") %s\n" \
19 "set [<mma_test_name_efi> <mma_test_param_bin>] | reset"
20 printf '=%.0s' {1..29}
21 printf "All possible MMA tests"
22 printf '=%.0s' {1..29}
23 printf "\n"
24 printf_separator
25 printf "Test Name \tMargin1D.efi\n"
26 printf "Test Config\n"
27 printf "\t\t%s %s\n" \
28 Margin1DCkAllConfig.bin \
29 Margin1DCmdAllConfig.bin \
30 Margin1DCmdVrefConfig.bin \
31 Margin1DCtlAllConfig.bin \
32 Margin1DRxDqsDelayConfig.bin \
33 Margin1DRxVrefConfig.bin \
34 Margin1DTxDqDelayConfig.bin \
35 Margin1DTxVrefConfig.bin
36 printf_separator
37 printf "Test Name \tMargin2D.efi\n"
38 printf "Test Config\n"
39 printf "\t\t%s %s\n" \
40 Margin2D_Cmd_Ch0_D0_R0_Config.bin \
41 Margin2D_Cmd_Ch0_D1_R0_Config.bin \
42 Margin2D_Cmd_Ch1_D0_R0_Config.bin \
43 Margin2D_Cmd_Ch1_D1_R0_Config.bin \
44 Margin2D_Rx_Ch0_D0_R0_Config.bin \
45 Margin2D_Rx_Ch0_D0_R1_Config.bin \
46 Margin2D_Rx_Ch0_D1_R0_Config.bin \
47 Margin2D_Rx_Ch0_D1_R1_Config.bin \
48 Margin2D_Rx_Ch1_D0_R0_Config.bin \
49 Margin2D_Rx_Ch1_D0_R1_Config.bin \
50 Margin2D_Rx_Ch1_D1_R0_Config.bin \
51 Margin2D_Rx_Ch1_D1_R1_Config.bin \
52 Margin2D_Tx_Ch0_D0_R0_Config.bin \
53 Margin2D_Tx_Ch0_D0_R1_Config.bin \
54 Margin2D_Tx_Ch0_D1_R0_Config.bin \
55 Margin2D_Tx_Ch0_D1_R1_Config.bin \
56 Margin2D_Tx_Ch1_D0_R0_Config.bin \
57 Margin2D_Tx_Ch1_D0_R1_Config.bin \
58 Margin2D_Tx_Ch1_D1_R0_Config.bin \
59 Margin2D_Tx_Ch1_D1_R1_Config.bin
60 printf_separator
61 printf "Test name \tMarginMapper.efi\n"
62 printf "Test Config\n"
63 printf "\t\t%s %s\n" \
64 MarginMapperRxVref-RxDqsDelayConfigVCh0ACh0_single_ch.bin \
65 MarginMapperRxVref-RxDqsDelayConfigVCh0ACh1_dual_ch.bin \
66 MarginMapperRxVref-RxDqsDelayConfigVCh1ACh0_dual_ch.bin \
67 MarginMapperRxVref-RxDqsDelayConfigVCh1ACh1_single_ch.bin \
68 MarginMapperTxVref-TxDqDelayConfigVCh0ACh0_single_ch.bin \
69 MarginMapperTxVref-TxDqDelayConfigVCh0ACh1_dual_ch.bin \
70 MarginMapperTxVref-TxDqDelayConfigVCh1ACh0_dual_ch.bin \
71 MarginMapperTxVref-TxDqDelayConfigVCh1ACh1_single_ch.bin \
72 ScoreRxVref-RxDqsDelayConfigVCh0ACh0_single_ch.bin \
73 ScoreRxVref-RxDqsDelayConfigVCh0ACh1_dual_ch.bin \
74 ScoreRxVref-RxDqsDelayConfigVCh1ACh0_dual_ch.bin \
75 ScoreRxVref-RxDqsDelayConfigVCh1ACh1_single_ch.bin \
76 ScoreTxVref-TxDqDelayConfigVCh0ACh0_single_ch.bin \
77 ScoreTxVref-TxDqDelayConfigVCh0ACh1_dual_ch.bin \
78 ScoreTxVref-TxDqDelayConfigVCh1ACh0_dual_ch.bin \
79 ScoreTxVref-TxDqDelayConfigVCh1ACh1_single_ch.bin
80 printf_separator
81 printf "Test Name \tRMT.efi\n"
82 printf "Test Config\n"
83 printf "\t\t%s %s\n" \
84 RMTConfig.bin
85 printf_separator
88 write_flash() {
89 printf "Writing back flash contents "${flashrom_temp_image}"\n"
90 flashrom -p host -w "${flashrom_temp_image}" --fast-verify || \
92 printf "failed to read flash\n" ;
93 exit -1;
97 remove_file_if_exists() {
98 if [ -f "${1}" ]; then
99 printf "removing old "${1}"\n"
100 rm -f "${1}"
104 remove_metadata() {
105 printf "Removing "${mma_test_metadata_bin}" from "${flashrom_temp_image}"\n"
106 cbfstool "${flashrom_temp_image}" remove -n ${mma_test_metadata_bin}
107 outout=$(cbfstool "${flashrom_temp_image}" print | \
108 grep ${mma_test_metadata_bin})
110 if [ -z "${outout}" ];then
111 printf "Removed ${mma_test_metadata_bin} from %s\n" \
112 "${flashrom_temp_image}"
113 else
114 printf "Failed to remove ${mma_test_metadata_bin} from %s\n" \
115 "${flashrom_temp_image}"
116 print_failed
117 exit -1;
121 generate_metadata() {
122 remove_file_if_exists "${mma_test_metadata_bin_path}"
124 printf "Creating "${mma_test_metadata_bin_path}"\n"
126 #Format of $mma_test_metadata_bin
127 #MMA_TEST_NAME=xxxxxx.efi;MMA_TEST_PARAM=xxxxxx.bin;
129 printf "MMA_TEST_NAME=${mma_test_name};MMA_TEST_PARAM=${mma_test_param};" \
130 > "${mma_test_metadata_bin_path}"
133 add_metadata_to_flashfile() {
134 cbfstool "${flashrom_temp_image}" add -f "${mma_test_metadata_bin_path}" \
135 -n ${mma_test_metadata_bin} -t ${file_type_mma} || \
137 printf "failed to add "${mma_test_metadata_bin_path}"\n" ;
138 exit -1;
142 cleanup() {
143 remove_file_if_exists "${flashrom_temp_image}"
144 remove_file_if_exists "${mma_test_metadata_bin_path}"
147 print_success() {
148 printf "============== SUCCESS ==============\n"
151 print_failed() {
152 printf "============== FAILED ==============\n"
156 # main entry point
159 main() {
160 case "${#}:${1}" in
161 (3:set)
162 mma_test_name=${2}
163 mma_test_param=${3}
165 (1:reset)
168 show_usage
169 exit -1
170 esac
172 if [ "${1}" != "reset" ];then
173 printf "mma_test_name = ${mma_test_name}\n"
174 printf "mma_test_param = ${mma_test_param}\n"
177 remove_file_if_exists "${flashrom_temp_image}"
179 printf "Reading flash contents to "${flashrom_temp_image}"\n"
180 flashrom -p host -r "${flashrom_temp_image}" || \
182 printf "failed to read flash\n" ;
183 exit -1;
186 outdata=$(cbfstool "${flashrom_temp_image}" print | \
187 grep ${mma_test_metadata_bin})
189 case "$1" in
190 ("set")
191 [ "${outdata}" ] && remove_metadata
192 generate_metadata
193 add_metadata_to_flashfile
194 write_flash
196 ("reset")
197 if [ -z "${outdata}" ];then
198 printf "${mma_test_metadata_bin} not found at all.\n"
199 else
200 remove_metadata
201 write_flash
204 esac
205 cleanup
206 print_success
209 main "$@"