Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dcp/dptx: Use dcpext(0) on j473/j474s/j475c #240

Closed

Conversation

jannau
Copy link
Member

@jannau jannau commented Nov 27, 2023

This switches j473, j474s and j475c to dcpext(0) as display co-processor for HDMI out. Main reason is that dcpext(0) wakes up after sleep + reset. This simplifies handling in m1n1 a little.

Adds support for the rarely used OOB ASYNC callback channel.

Requires AsahiLinux/m1n1#361

contains kernel-robot fixes for bits/200-dcp

marcan and others added 30 commits November 25, 2023 13:20
Signed-off-by: Janne Grunau <j@jannau.net>
Signed-off-by: Janne Grunau <j@jannau.net>
Signed-off-by: Janne Grunau <j@jannau.net>
Signed-off-by: Janne Grunau <j@jannau.net>
Only observed with dcp/dptx in linux after initialisation and reset in
m1n1. On the initial startup dcp sends two D576 (hotPlug_notify_gated)
presumendly due to state confusion due to  the multiple dptx
connections.

Signed-off-by: Janne Grunau <j@jannau.net>
Signed-off-by: Janne Grunau <j@jannau.net>
Under unknown but slightly broken conditions dcp sends timing modes
without linked color modes. Log a warning when this happens and log the
number of valid modes before emitting HPD events.

Signed-off-by: Janne Grunau <j@jannau.net>
DSC setup seems to require extra steps. dcp reports itself a bandwith
limit of 926484480:
`IOMFB removing mode: 3840 x 2160 @ 119, bw: 987033600 max: 926484480`

Signed-off-by: Janne Grunau <j@jannau.net>
DPTX setup from an initialized connection and display with sleeping and
reset dcp is unfortunately quite fragile. The display connection has to
be stopped and reestablished. Goodbye flicker free boot.
If the IOMFB endpoint is started too early dcp might provide incomplete
timing modes which prevent modesets.
On display standby a HPD is triggered should result in a fully
initialized dcp. If not a display cable unplug and plug should help.
MacOS doesn't handle this at all and just gives up.

Signed-off-by: Janne Grunau <j@jannau.net>
dcp on t8112 and t602x does not wake up after sleep + reset but dcpext*
does. Use dcpext0 for sharing the code with M1* devices.
My interpretation of the tea leaves from Apple's marketing department
suggests that dcpext is more capable (6k 60Hz vs 5k 60Hz) so use dcpext
as long as only one is used.

Signed-off-by: Janne Grunau <j@jannau.net>
…dp2hdmi

Prevent m1n1 from enabling the absent dcp node.

Signed-off-by: Janne Grunau <j@jannau.net>
dcp on t8112 and t602x does not wake up after sleep + reset but dcpext*
does. Use dcpext0 for sharing the code with M1* devices.
My interpretation of the tea leaves from Apple's marketing department
suggests that dcpext is more capable (6k 60Hz vs 5k 60Hz) so use dcpext
as long as only one is used.

Signed-off-by: Janne Grunau <j@jannau.net>
@jannau
Copy link
Member Author

jannau commented Nov 27, 2023

manually merged, thanks

@jannau jannau closed this Nov 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants