diff options
author | Evgeny Zinoviev <me@ch1p.io> | 2021-02-10 15:27:31 +0300 |
---|---|---|
committer | Evgeny Zinoviev <me@ch1p.io> | 2021-02-10 15:27:31 +0300 |
commit | b1918fd7dde901388dc215ca7779e8e41dbb7df6 (patch) | |
tree | 148789d364c765f3dbe1cd2c06dcbe1010ed8925 /get_macbook_ramconfig | |
parent | 097752bcb135407f404fd8b6478a31b1e24a7f97 (diff) |
support multiple models as they all use the same gpios
Diffstat (limited to 'get_macbook_ramconfig')
-rwxr-xr-x | get_macbook_ramconfig | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/get_macbook_ramconfig b/get_macbook_ramconfig new file mode 100755 index 0000000..d3a32b1 --- /dev/null +++ b/get_macbook_ramconfig @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +import sys +import argparse + + +ramconfigs = { + 'mba52': ( + '4b_hynix', + None, + '8g_hynix', + None, + '4g_samsung', + None, + '8g_samsung', + None, + None, + None, + None, + None, + '4g_elpida', + None, + '8g_elpida', + ), + 'mbp101': ( + '4g_hynix_1600s', + '1g_samsung_1600', + '4g_samsung_1600s', + '1g_hynix_1600', + '4g_elpida_1600s', + '2g_samsung_1600', + '2g_samsung_1333', + '2g_hynix_1600', + '4g_samsung_1600', + '4g_hynix_1600', + '2g_elpida_1600s', + '2g_elpida_1600', + '4g_elpida_1600', + '2g_samsung_1600s', + '2g_hynix_1600s' + ) +} + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('-m', '--model', + choices=list(ramconfigs.keys()), + help='MacBook model', + required=True) + + args = parser.parse_args() + + configs = ramconfigs[args.model] + + reg = None + for line in sys.stdin: + line = line.strip() + if not line.endswith('(GPIO_LVL3)'): + continue + + reg = int(line.split(' ')[1], 16) + break + + if reg is None: + raise Exceptions("failed to parse gpio registers") + + # GPIO68..GPIO71 + ramcfg = (reg >> 4) & 0xf + + # reverse bit order + ramcfg = int('{:04b}'.format(ramcfg)[::-1], 2) + + if ramcfg >= len(configs) or configs[ramcfg] is None: + print("unsupported memory configuration %d" % ramcfg) + else: + print("%s (RAMCFG=%01x)" % (configs[ramcfg], ramcfg)) + + +if __name__ == '__main__': + main() |