diff options
-rw-r--r-- | util/scripts/description.md | 3 | ||||
-rwxr-xr-x | util/scripts/show_platforms.sh | 47 |
2 files changed, 50 insertions, 0 deletions
diff --git a/util/scripts/description.md b/util/scripts/description.md index eb7a1e8167..780e9c95d6 100644 --- a/util/scripts/description.md +++ b/util/scripts/description.md @@ -25,5 +25,8 @@ __scripts__ `Perl` * _rm_unused_code_ - Remove all code not used for a platform from the local git repository for auditing or release `Bash` + * _show_platforms.sh_ - Makes a list of platforms in the tree. Does + not show variants. + `Shell` * _ucode_h_to_bin.sh_ - Microcode conversion tool `Bash` * _update_submodules_ - Check all submodules for updates `Bash` diff --git a/util/scripts/show_platforms.sh b/util/scripts/show_platforms.sh new file mode 100755 index 0000000000..39d77725a8 --- /dev/null +++ b/util/scripts/show_platforms.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# SPDX-License-Identifier: GPL-2.0-only +# +# This script finds all of the top-level mainboards, then goes through +# and finds the date the directory was added, the processor type, and +# the board type. +# +# This could be improved by finding all of the variants, then figuring +# out when those veriants were added. +# It's also very slow, but only needs to be run once in a while... + +readarray -t platforms < <(find src/mainboard -mindepth 3 -name 'Kconfig' | sort) + +echo '```eval_rst' +echo "+-------------------------------+------------------------+------------+-----------+" +echo "| Vendor/Board | Processor | Date added | Brd type |" +echo "+===============================+========================+============+===========+" + +for file in "${platforms[@]}"; do + platformname="$(echo "${file}" | sed 's|.*/mainboard/||;s|/Kconfig||')" + if [[ ! -f "${file/Kconfig/board_info.txt}" ]]; then + continue + fi + chips="$(grep "CPU_\|SOC_\|NORTHBRIDGE" "${file}" | + grep -v "SUBTYPE\|COMMON\|SOCKET\|ENABLE\|CONSOLE\|SMU\|depends on\|ESPI\|INTEL_CSE\|NORTHBRIDGE_AMD_AGESA\|INTEL_SLOT\|REBOOT\|DISABLE" | + sed -e 's|\s\+select\s\+||' \ + -e 's|\s\+if.*||' \ + -e 's|SKYLAKE_SOC_PCH|INTEL_SKYLAKE|' \ + -e 's|CPU_AMD_AGESA|AMD|' \ + -e 's|SOC_INTEL_ALDERLAKE_PCH_|INTEL_ALDERLAKE|' \ + -e 's|QC_|QUALCOMM_|' \ + -e 's/SOC_\|NORTHBRIDGE_\|PCH_\|CPU_//g' | + sort -u)" + if [[ ! -f ${file/Kconfig/board_info.txt} ]]; then + continue + fi + create_date="$(git log --format="format:%cs" -- "${file}" | tail -n1)" + platform_type="$(sed -nE -e 's/Category: (.*)/\1/p' "${file/Kconfig/board_info.txt}" 2>/dev/null)" + for chip in ${chips}; do + + printf "| %-29s | %-22s | %-10s | %-9s |\n" "${platformname}" "${chip}" "${create_date}" "${platform_type}" + done +done + +echo "+-------------------------------+------------------------+------------+-----------+" +echo '```' |