|
| 1 | +#!/usr/bin/env python3 |
| 2 | +# SPDX-License-Identifier: MIT |
| 3 | +import sys, pathlib, fnmatch |
| 4 | +import time |
| 5 | +sys.path.append(str(pathlib.Path(__file__).resolve().parents[1])) |
| 6 | + |
| 7 | +import struct |
| 8 | +from m1n1.setup import * |
| 9 | +from m1n1.fw.asc import StandardASC |
| 10 | +from m1n1.hw.dart8110 import DART8110 |
| 11 | +from m1n1.hw.dockchannel import DockChannel |
| 12 | +from m1n1.fw.smc import SMCClient, SMCError |
| 13 | +from m1n1.shell import run_shell |
| 14 | + |
| 15 | +from construct import * |
| 16 | + |
| 17 | +p.dapf_init_all() |
| 18 | + |
| 19 | +dart = DART8110.from_adt(u, "/arm-io/dart-mtp", iova_range=(0x8000, 0x100000)) |
| 20 | + |
| 21 | +dart.regs.TCR[1].set(BYPASS_DAPF=0, BYPASS_DART=0, TRANSLATE_ENABLE=1) |
| 22 | + |
| 23 | +mtp_addr = u.adt["/arm-io/mtp"].get_reg(0)[0] |
| 24 | +mtp = StandardASC(u, mtp_addr, dart, stream=1) |
| 25 | +mtp.verbose = 3 |
| 26 | +mtp.allow_phys = True |
| 27 | +mtp.start() |
| 28 | + |
| 29 | +irq_base = u.adt["/arm-io/dockchannel-mtp"].get_reg(1)[0] |
| 30 | +fifo_base = u.adt["/arm-io/dockchannel-mtp"].get_reg(2)[0] |
| 31 | +dc = DockChannel(u, irq_base, fifo_base, 1) |
| 32 | + |
| 33 | +for i in range(128): |
| 34 | + mtp.work() |
| 35 | + |
| 36 | +dc.write(bytes.fromhex("08110c00010000008000020000000000b4010000c2ecf1ff")) |
| 37 | +dc.write(bytes.fromhex("08110c00020000008000020000000000b4020000c1ebf1ff")) |
| 38 | + |
| 39 | +def poll(): |
| 40 | + v = dc.read_all() |
| 41 | + if v: |
| 42 | + chexdump(v) |
| 43 | + mtp.work() |
| 44 | + |
| 45 | +mtp.stop() |
| 46 | + |
| 47 | +#run_shell(locals(), poll_func=poll) |
0 commit comments