Skip to content

Enable T6030 external display support - #607

Open
a-ramses wants to merge 19 commits into
AsahiLinux:asahi-wip-7.2from
a-ramses:test/t6030-external-edid
Open

Enable T6030 external display support#607
a-ramses wants to merge 19 commits into
AsahiLinux:asahi-wip-7.2from
a-ramses:test/t6030-external-edid

Conversation

@a-ramses

@a-ramses a-ramses commented Sep 8, 2026

Copy link
Copy Markdown

Add T6030 DisplayPort PHY support and device-tree wiring, with DCP and RTKit fixes. USB-C display output and EDID retrieval are tested. HDMI output works with a forced mode; HDMI EDID parsing remains unresolved.

Use the 32-bit size fields and return code in the 48-byte response header.
Pass the full response buffer length and reject errors and oversized replies.

Firmware 14.7 replies also carry the existing eight-byte EDID prefix.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Descend into tipd when its shared core is selected, including SPMI-only
configurations.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Initialize optional fields and discard data left in a mode slot after a
failed parse.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Dispatch get_tiling_state and set_tiling_state at callback indices 115
and 116.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
A zero completion result means timeout, not success. Return -ETIMEDOUT
in that case.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Return management-message send failures and stop AFK initialization when
starting its endpoint fails.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Set the receive FIFO enable bit on T6030 ASC mailboxes.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Start the debug endpoint and provide its requested shared buffers. Free
them on reset and teardown.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Add separate AUX and HBR3 lane operations for T6030 using the existing
hardware dispatch.

Derive active lanes from mode and orientation, stopping before
orientation changes.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Track HPD changes and notify the referenced DRM connector around Type-C
mode updates.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Exclude T8122-compatible PHY endpoints from DCP component matching, as
already done for T8103.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Poll between short completion waits to recover messages when interrupt
delivery stalls.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Add an opt-in immediate acknowledgement path for syslog and IOReport
messages. Reply before dispatching later messages, skipping normal
processing of these log entries.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Delay initialization after endpoint startup and poll for its reply.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Return the read error instead of masking it as ENODEV.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Describe display controllers, DARTs, mailboxes and crossbars, including
the DMA window and power settings.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Add the panel properties, framebuffer links and display aliases.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
Enable dcpext1 and route it through ATC0 to USB-C.
Enable synchronous firmware acknowledgements and keep ATC0 powered.

Signed-off-by: Ramzi Abdiche <abdicheramzi@gmail.com>
@a-ramses
a-ramses force-pushed the test/t6030-external-edid branch from d81f6c0 to 546038d Compare September 8, 2026 21:02
@sofus13 sofus13 mentioned this pull request Sep 9, 2026
Comment thread drivers/gpu/drm/apple/epic/dpavservep.c Outdated
Comment thread drivers/gpu/drm/apple/epic/dpavservep.c Outdated
Comment thread drivers/gpu/drm/apple/epic/dpavservep.c Outdated
mbox-names = "mbox";
iommus = <&dcp_dart 5 0x100 0x0 0x10 0x0>;

reg-names = "coproc", "disp-0", "disp-1", "disp-2", "disp-3";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does it work with 4? dcpep_cb_map_reg failed for me until i added a fifth

@sofus13

sofus13 commented Sep 9, 2026

Copy link
Copy Markdown

Would it make sense if i took the dcp related dt changes and added them to my pr?

@alyssarosenzweig

alyssarosenzweig commented Sep 9, 2026

Copy link
Copy Markdown
Member

Please provide sign offs under your known identity (I see a real name on your GitHub so I don't think it's meant to be anonymous?)

https://docs.kernel.org/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin

@a-ramses
a-ramses force-pushed the test/t6030-external-edid branch from 546038d to d8a6a93 Compare September 9, 2026 21:57
Comment thread drivers/phy/apple/atc.c Outdated
}

static void atcphy_enable_dp_aux(struct apple_atcphy *atcphy)
static const struct atcphy_dp_link_rate_configuration dp_hbr3_config_t8122 = {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dp_rbr_config_t8122 = {
        .freqinit_count_target = 0x21c,
        .fbdivn_frac_den = 0,
        .fbdivn_frac_num = 0,
        .pclk_div_sel = 0x13,
        .lfclk_ctrl = 5,
        .vclk_op_divn = 1, // No AUSPLL_FD_VCLK_PRE_DIVN
};

dp_hbr_config_t8122 = {
        .freqinit_count_target = 0x1c2,
        .fbdivn_frac_den = 0x3FFE,
        .fbdivn_frac_num = 0x1FFF,
        .pclk_div_sel = 0x9,
        .lfclk_ctrl = 5,
        .vclk_op_divn = 1, // No AUSPLL_FD_VCLK_PRE_DIVN
};

dp_hbr2_config_t8122 = {
        .freqinit_count_target = 0x1c2,
        .fbdivn_frac_den = 0x3FFE,
        .fbdivn_frac_num = 0x1FFF,
        .pclk_div_sel = 0x4,
        .lfclk_ctrl = 5,
        .vclk_op_divn = 1,
};

So, most of it seems to match the t8103 values.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed the duplicate HBR3 configuration and reused the existing table

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But they do not fully match? the lfclk_ctrl seems to be different. Also, you are hardcoding hbr3, instead of the correct table for the link rate.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So can we select dp_lr_config[lr] for the requested rate, giving lfclk_ctrl = 5 for RBR/HBR/HBR2 and 6 for HBR3, while handling the t8122-specific divider differences separately? Or does lfclk_ctrl also differ between generations for the same rate?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can just have a second table for the values that differ in t8122 next to the t8103 one

Comment thread drivers/phy/apple/atc.c
};

/* Do not enable this DP sequence on untested T8122-family SoCs. */
static const struct atcphy_hw atcphy_hw_t6030 = {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same sequence on t6031. Can't really test it, as i haven't gotten dcp working there yet, but the traces seem to match.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have kept this patch limited to t6030 for now, since thats what I have been able to test

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't worry and just send it for all of them.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So should we enable these dp operations in the shared t8122 configuration, covering t8122, t6030 and t6031, and remove the t6030-only configuration?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep.

@a-ramses
a-ramses force-pushed the test/t6030-external-edid branch from d8a6a93 to a79cec0 Compare September 13, 2026 12:30
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.

5 participants