summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2015-10-27 15:15:22 (EDT)
committer P. J. McDermott <pj@pehjota.net>2015-10-27 15:15:22 (EDT)
commitd23264f08540bb83e13e86a6af86962723abf539 (patch)
treeeea0940b54583c1c875137796b97c62c6003fb7f
parent819bd1403fd1d339eb8722aab1e549f89ce9b7c1 (diff)
downloadfirman.sh-d23264f08540bb83e13e86a6af86962723abf539.zip
firman.sh-d23264f08540bb83e13e86a6af86962723abf539.tar.gz
firman.sh-d23264f08540bb83e13e86a6af86962723abf539.tar.bz2
Add board information code
-rw-r--r--src/board.sh28
-rw-r--r--src/board/local.mk2
-rw-r--r--src/board/x200.sh56
-rw-r--r--src/local.mk2
4 files changed, 88 insertions, 0 deletions
diff --git a/src/board.sh b/src/board.sh
new file mode 100644
index 0000000..35d2bcf
--- /dev/null
+++ b/src/board.sh
@@ -0,0 +1,28 @@
+# Board bindings
+#
+# 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/>.
+
+board_functions='get_name match validate_chip get_dists'
+
+select_board()
+{
+ local board="${1}"
+ local fn=
+
+ for fn in ${board_functions}; do
+ eval "board_${fn}() { board_${board}_${fn} \"\${@}\"; }"
+ done
+}
diff --git a/src/board/local.mk b/src/board/local.mk
new file mode 100644
index 0000000..db71a85
--- /dev/null
+++ b/src/board/local.mk
@@ -0,0 +1,2 @@
+firman_SOURCES += \
+ src/board/x200.sh
diff --git a/src/board/x200.sh b/src/board/x200.sh
new file mode 100644
index 0000000..1c9b3a2
--- /dev/null
+++ b/src/board/x200.sh
@@ -0,0 +1,56 @@
+# Lenovo ThinkPad X200 board
+#
+# 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/>.
+
+board_x200_get_name()
+{
+ printf 'Lenovo ThinkPad X200'
+ return 0
+}
+
+board_x200_match()
+{
+ local vendor="${1}"
+ local part="${2}"
+ shift 2
+
+ if [ "x${vendor}" = 'xLENOVO' ] && [ "x${part}" = 'xThinkPad X200' ]
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+board_x200_validate_chip()
+{
+ local chip="${1}"
+ shift 1
+
+ case "${chip}" in
+ 'AT25DF321') return 0;; # AT26DF321-SU
+ 'MX25L3205D') return 0;; # MX25L3205DM2I-12G
+ 'MX25L6405D') return 0;; # MX25L6405DMI-12G
+ 'W25X64') return 0;; # W25X64VSFIG
+ *) return 1;;
+ esac
+}
+
+board_x200_get_dists()
+{
+ printf 'libreboot libiquity'
+ return 0
+}
diff --git a/src/local.mk b/src/local.mk
index 4d0e58d..e1b21d3 100644
--- a/src/local.mk
+++ b/src/local.mk
@@ -1,5 +1,7 @@
firman_SOURCES += \
+ src/board.sh \
src/main.sh \
src/ui.sh
+include $(top_srcdir)/src/board/local.mk
include $(top_srcdir)/src/ui/local.mk