diff options
Diffstat (limited to 'include/option.sh')
-rwxr-xr-x | include/option.sh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/option.sh b/include/option.sh index ffcc7e94..6ae5f2de 100755 --- a/include/option.sh +++ b/include/option.sh @@ -36,3 +36,44 @@ scan_config() EOF rm -f "${revfile}" || "${_fail}" "scan_config: Cannot remove tmpfile" } + +handle_coreboot_utils() +{ + for util in cbfstool ifdtool; do + x_ ./update project build ${_f} "src/coreboot/${1}/util/${util}" + [ -z ${mode} ] && [ ! -f "cbutils/${1}/${util}" ] && \ + x_ mkdir -p "cbutils/${1}" && \ + x_ cp "src/coreboot/${1}/util/${util}/${util}" \ + "cbutils/${1}" + [ -z ${mode} ] || \ + x_ rm -Rf "cbutils/${1}" + done +} + +modify_coreboot_rom() +{ + rompath="${codedir}/build/coreboot.rom" + [ -f "${rompath}" ] || \ + err "modify_coreboot_rom: does not exist: ${rompath}" + tmprom="$(mktemp -t rom.XXXXXXXXXX)" + x_ rm -f "${tmprom}" + + if [ "${romtype}" = "d8d16sas" ]; then + # pike2008 roms hang seabios. an empty rom will override + # the built-in one, thus disabling all execution of it + x_ touch "${tmprom}" + for deviceID in "0072" "3050"; do + x_ "${cbfstool}" "${rompath}" add -f "${tmprom}" \ + -n "pci1000,${deviceID}.rom" -t raw + done + elif [ "${romtype}" = "i945 laptop" ]; then + # for bucts-based installation method from factory bios + x_ dd if="${rompath}" of="${tmprom}" bs=1 \ + skip=$(($(stat -c %s "${rompath}") - 0x10000)) \ + count=64k + x_ dd if="${tmprom}" of="${rompath}" bs=1 \ + seek=$(($(stat -c %s "${rompath}") - 0x20000)) \ + count=64k conv=notrunc + fi + x_ rm -f "${tmprom}" +} |