amx-mst701/scripts/analyze_iomux.py
2024-12-18 13:57:56 +01:00

37 lines
845 B
Python
Executable File

#!/usr/bin/env python
import re
import sys
baseaddr=0x53FA8000
pinfunc="/home/markus/projects/amx-tablet/linux/arch/arm/boot/dts/nxp/imx/imx53-pinfunc.h"
memdump=sys.argv[1]
re_define = re.compile(r'^#define (\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+).*$')
pinfuncs = {}
with open(pinfunc) as file:
for line in file:
m = re_define.match(line)
if m:
name = m.group(1)
offset = baseaddr + int(m.group(2), 16)
mux_mode = int(m.group(5), 16)
if not offset in pinfuncs:
pinfuncs[offset] = [None] * 8
pinfuncs[offset][mux_mode] = name
with open(memdump) as file:
for line in file:
name = line.split()
addr = int(name[0], 16)
value = int(name[1], 16)
if addr in pinfuncs:
mux_mode = value & 7
func_str = pinfuncs[addr][mux_mode]
func = func_str.split("__")
print(f"{func[0]}:\r\t\t\t\t{func[1]}")