Janne Grunau
50ac69eaa5
dcp: Wait 25ms after enabling dcp/dptx-phy power-domains
...
Fixes display initialization from stage 1 m1n1. 20ms looked reliable on
j473 but let's add 25% safety margin. Someone with more motivation (and
HW serial) to do repeated `kmutil configure-boot ...` can try to
minimize this and test on t602x.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-07 21:56:19 +09:00
Janne Grunau
0097d51149
afk/dptx: Convert noisy/misleading printf to dprintf
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-07 21:56:19 +09:00
Hector Martin
595ecb423a
m1n1.adt: Fix the weird DAPF variant parsing
...
Looks like there is a flag bit for this...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 16:05:53 +09:00
Asahi Lina
7e3e9ac301
isp, kboot: Misc changes for t8112
...
Probably doesn't do anything...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
5e2e537506
m1n1.adt: Add DAPF decoding
...
There's a weird thing with DCP DAPF entries being larger... but we don't
use them anyway?
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
e1bb8e85a6
m1n1.adt: Fix dashes in __delattr__
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
d07ea82821
kboot: Add firmware versions to ISP node
...
Might be useful...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
182fddd31e
kboot: Fix ISP remap on t8103/t8112
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
0e471529cc
m1n1.trace.isp: Hexdump to HV log
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
204f6b8189
m1n1.fw.isp: Fix message validity check
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Asahi Lina
6aca0608d8
isp: Handle high mapped VAs for t602x
...
This is similar to some of the other hardware we've seen on this SoC...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:21:13 +09:00
Hector Martin
0b7708f98e
kboot: Try isp/isp0 for reserving firmware
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:21:13 +09:00
Hector Martin
5a632bad87
kboot: Make dt_get_or_add_reserved_mem mutate existing nodes
...
This means we can use it with pre-created nodes in the DT.
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:21:13 +09:00
Hector Martin
4ae23577cc
kboot: Handle ISP heap carveout
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:21:13 +09:00
Hector Martin
c03f94c86a
kboot: Handle ISP/SIO reserved firmware differences
...
The iova field is different, handle it with a flag.
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:21:13 +09:00
Hector Martin
dd2d4e5441
kboot: Use adt_segment_ranges struct instead of open-coding
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:21:13 +09:00
Eileen Yoon
f4d6d2069a
isp: ISP init module
...
Co-authored-by: Hector Martin <marcan@marcan.st>
Signed-off-by: Hector Martin <marcan@marcan.st>
Signed-off-by: Eileen Yoon <eyn@gmx.com>
2023-10-05 14:21:13 +09:00
Eileen Yoon
f89e33c5ee
kboot: Reserve ISP firmware
...
Signed-off-by: Eileen Yoon <eyn@gmx.com>
2023-10-05 14:19:31 +09:00
Hector Martin
ee536f7414
pmgr: Expose pmgr_set_mode
...
For ISP stuff which is not declared in the ADT
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:19:31 +09:00
Hector Martin
e1421f6fef
dapf: Also (try to) init dart-isp0
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:19:31 +09:00
Eileen Yoon
6072b8facf
dapf: Support reg indexing + add ISP
...
Also enable power if domain exists.
Signed-off-by: Eileen Yoon <eyn@gmx.com>
2023-10-05 14:13:45 +09:00
Hector Martin
e378605d70
hv/trace_wlan.py: Backplane tracing & more
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:11:59 +09:00
Hector Martin
11748d6261
m1n1.hv: Make xnu_mode reflect if we used a macho or not
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-10-05 14:11:59 +09:00
Asahi Lina
0b1c9d98b7
m1n1.hw.dart8110: 4-level support
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-10-05 14:11:59 +09:00
Eileen Yoon
51b6dd8701
isp: Initial commit
...
Add initial stream demo + patched tracer
Signed-off-by: Eileen Yoon <eyn@gmx.com>
2023-10-05 14:02:49 +09:00
Janne Grunau
187e7f8893
kboot/gpu: Add "no-map" property for reserved memory nodes
...
Without this property u-boot will add reserved memory regions to the
EFI memory map with the wrong type. This results in Linux mapping it
and thus breaking the intended use in the asahi driver.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 14:02:07 +09:00
Daniel Berlin
da1f50be74
Issue error message if firmware_set_fdt fails
...
Signed-off-by: Daniel Berlin <dberlin@dberlin.org>
2023-10-05 14:01:17 +09:00
Janne Grunau
31ee1499f8
display: Support the HDMI output on M2* desktop systems
...
On M2* desktop systems the HDMI output is not managed by dcp/dcp0. This
allows more flexibility, for example dcp on the M2 Mac mini can be
routed to the USB-C/ThunderBolt ports.
For m1n1 this adds quite ab bit of complexity. In addition to the DCP
iboot endpoint/protocol two additional endpoints have to be started.
Only the dptx-port endpoint has a meaningful AP <=> DCP communication.
In addition we start the system endpoint to optionally enable more
verbose syslog messages (if RTKIT_SYSLOG is defined).
In addition the dptx-phy or lpdptx-phy has to be programmed. Those two
phy look mostly identical. MacOS seems to use a static DP configuration
(4 lanes, HBR3*) regardless of the connected display.
The added SMC gpio support is used to power the MCDP29xx DP to HDMI
converter on.
Config is unfortunately a mess since Apple can't name the device tree
nodes consistently. On M2 Ultra devices only the four dcpext*/dispext*
on each die are used. M2 Ultra support is untested.
* link rate might differ on t602x based devices for 8k60 support
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
517c8e5f5b
smc: Add minimal smc client
...
Only supported operation is smc_write_u32() for turning the dp2hdmi
converter on M2 desktop systems on.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
b65c7d1edc
rtkit: Support usage with SRAM
...
Will be used by SMC.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
41e4e25eed
dcp/system: Add system endpoint
...
This on is boring but allows turning additional logging on.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
f46da8bbbb
dcp/dpav: Add DPAV endpoint
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
b44a862756
dcp/dptx: Add dptx-port endpoint
...
Based on the linux kernel implementation with updates for the macOS 13.5
based DCP firmware.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
2b58bfd24b
dcp: Do not use an anonymous struct for dcp_dev_t typedef
...
This allows forward declarations in other headers.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
73b78abe3b
afk: epic channel/interface numbers do not reset
...
They exceed 256 with repeated chainloading of m1n1.bin on j473. Do not
hold a service for every possible channel but keep a fixed array of 8
services identified by the channel number.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
14826241a9
afk: Add EPIC std services IOp -> AP calls
...
Used on dptx-port endpoint.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
7473a0779e
afk: use increasing EPIC sequence numbers
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
29b6e668f9
afk: Introduce EPIC services
...
To be used on the dptx-port endpoint.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
a4c4b8cd99
afk: Fix a NULL pointer dereference in adfk_epic_send()
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
76fbc77ad2
afk: Prepare afk/epic for handling of multiple endpoints
...
This needs to ensure that the data processing does not block on
message retrieval from the mailbox. Command processing must not block
and have to ensure that afk_epic_command() receives the reply to its
command.
DCP's dptx-port endpoint (endpoint 0x2a) can send notifies at any time
which needs to be processed in the right context.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
84c0aa10bb
afk: Sync structs/names with proxyclient's python definitions
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
64ab7258a8
dcp: dptx-phy: make dptx_phy_set_link_rate() SoC independent
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
00c1feca47
dcp: dptx-phy: rewrite dptx_phy_activate() for dptx/lpdptx-phy
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
fc64fcc682
dcp: Add (lp)dptx-phy support for M2* desktops
...
Phy "implementation" is simplified a replay of a macos trace with on
t8112 with a 1920x1080 display.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
02cedf3f45
dcp/parser: Add parser from linux DCP required for parsing dcp AFK/EPIC
...
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
4cb3dceb0a
dart: limit vm-base to 36-bit io address space
...
Required for t602x dcp*.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
b9975760d7
rtkit: Add rtkit_can_recv()
...
Required non-blocking handling of multiple AFK endpoints for the same
mailbox.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
b72407ed23
display: Use dcp iboot SetSurface instead of SwapLayer
...
iboot uses this and it's simpler. m1n1 doesn't need to swap surfaces
for tear free display.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:33:35 +09:00
Janne Grunau
fecfa130e9
kboot: Parse "anvram" partition start and size from ADT
...
"nvram" size depends on the iboot version. Monterey (12.3) and earlier
used 128k nvram partition but Ventura since at least 13.2 increased the
size to 1M. Parse the values from the ADT and fill and enable the node
in the device tree.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:32:40 +09:00
Janne Grunau
0cf2302f35
adt: Use the current node's #address-cells to translate "ranges"
...
Fixes adt_get_reg() for the nvram partition.
Signed-off-by: Janne Grunau <j@jannau.net>
2023-10-05 12:32:40 +09:00