summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2015-10-28 15:44:47 (EDT)
committer P. J. McDermott <pj@pehjota.net>2015-10-28 15:44:47 (EDT)
commitef0923da59d7c2669ad3a6d2ce57c8ab0c3b3457 (patch)
treec1a0b3a66c3c7c95a6a3f15ff2c2149b928a95bb /src
parent845463f15920155effe3160c211586566e97f0a8 (diff)
downloadfirman.sh-ef0923da59d7c2669ad3a6d2ce57c8ab0c3b3457.zip
firman.sh-ef0923da59d7c2669ad3a6d2ce57c8ab0c3b3457.tar.gz
firman.sh-ef0923da59d7c2669ad3a6d2ce57c8ab0c3b3457.tar.bz2
src/board/ich9.sh: New file
Diffstat (limited to 'src')
-rw-r--r--src/board/ich9.sh81
-rw-r--r--src/board/local.mk1
2 files changed, 82 insertions, 0 deletions
diff --git a/src/board/ich9.sh b/src/board/ich9.sh
new file mode 100644
index 0000000..b0d7d4e
--- /dev/null
+++ b/src/board/ich9.sh
@@ -0,0 +1,81 @@
+# ROM preparation for boards with Intel ICH9
+#
+# Copyright (C) 2015 Patrick "P. J." McDermott
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ich9_prepare_rom()
+{
+ local mac=''
+ local rom_size=
+
+ info 'Generating FD and GbE flash regions for Intel ICH9'
+
+ # Get MAC address.
+ while :; do
+ mac="$(show_prompt 'Enter MAC address')"
+ case "${mac}" in
+ *[!0-9a-zA-Z:]*)
+ continue
+ ;;
+ ??:??:??:??:??:??)
+ break
+ ;;
+ esac
+ done
+ info 'MAC address: %s' "${mac}"
+
+ # Create temporary directory.
+ if ! mkdir "$(get_temp_dir)/ich9"; then
+ err 'Failed to create temporary directory'
+ return 1
+ fi
+
+ # Generate FD and GbE flash regions.
+ if ! (cd "$(get_temp_dir)/ich9" && \
+ ${ICH9GEN} --macaddress "${mac}" >/dev/null 2>&1); then
+ err 'Failed to generate FD and GbE flash regions'
+ rm_temp 'ich9'
+ return 1
+ fi
+
+ # Detect ROM size.
+ case "$(wc -c "$(get_temp_dir)/rom" | cut -d ' ' -f 1)" in
+ 4194304)
+ rom_size=4
+ ;;
+ 8388608)
+ rom_size=8
+ ;;
+ *)
+ err 'Invalid ROM size'
+ rm_temp 'ich9'
+ return 1
+ ;;
+ esac
+
+ # Insert FD and GbE flash regions into ROM.
+ if ! dd if="$(get_temp_dir)/ich9/ich9fdgbe_${rom_size}m.bin" \
+ of="$(get_temp_dir)/rom" bs=1 count=12k conv=notrunc
+ then
+ err 'Failed to insert FD and GbE flash regions into ROM'
+ rm_temp 'ich9'
+ return 1
+ fi
+
+ # Clean up.
+ rm_temp 'ich9'
+
+ return 0
+}
diff --git a/src/board/local.mk b/src/board/local.mk
index 06f61e6..e3d4ec5 100644
--- a/src/board/local.mk
+++ b/src/board/local.mk
@@ -1,4 +1,5 @@
firman_SOURCES += \
+ src/board/ich9.sh \
src/board/taurinus_x200_4mb.sh \
src/board/taurinus_x200_8mb.sh \
src/board/x200_4mb.sh \