Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 48 additions & 1 deletion arch/arm64/boot/dts/apple/t8122-j613.dts
Original file line number Diff line number Diff line change
Expand Up @@ -651,14 +651,61 @@
};
};

/*
* With the lid closed the internal DCP's pipe can drive a second external
* display on the left-front port. In the J613 ADT the
* internal DCP is display-crossbar ufp0, port 0, which is crossbar state 0
* (dispext0,0) on ATC1's crossbar, DPTX target 1 like dcpext's route@1. The
* pipe's first DPTX core drives the panel otherwise, so the display driver
* only offers this route while the lid is closed and the panel is off, and
* only to a display that dcpext cannot take.
*
* The route stays disabled here, like dcpext's: the display gate enables it
* together with dcpext. The front connector has one endpoint per pipeline
* that can drive it, as on the M1 Pro/Max laptops.
*/
&dcp {
phys = <&atcphy1 PHY_TYPE_DP>;
phy-names = "typec0";
mux-controls = <&atcphy1_xbar 0>;
mux-control-names = "typec0";
apple,typec-mux-indices = <0>;
apple,typec-dptx-phys = <1>;

typec-routes {
#address-cells = <1>;
#size-cells = <0>;

route@0 {
reg = <0>;
mode-switch;
status = "disabled";

port {
dcp_typec1: endpoint {
remote-endpoint = <&typec1_dcp>;
};
};
};
};
};

&typec1 {
ports {
port@3 {
reg = <3>;
#address-cells = <1>;
#size-cells = <0>;

typec1_dcpext: endpoint {
typec1_dcpext: endpoint@0 {
reg = <0>;
remote-endpoint = <&dcpext_typec1>;
};

typec1_dcp: endpoint@1 {
reg = <1>;
remote-endpoint = <&dcp_typec1>;
};
};
};
};
1 change: 1 addition & 0 deletions drivers/gpu/drm/apple/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ config DRM_APPLE
select DRM_GEM_DMA_HELPER
select VIDEOMODE_HELPERS
depends on BACKLIGHT_CLASS_DEVICE
depends on INPUT
select MULTIPLEXER
select DRM_APPLE_FABRIC_CORE
help
Expand Down
6 changes: 4 additions & 2 deletions drivers/gpu/drm/apple/apple_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,10 @@ apple_connector_detect(struct drm_connector *connector, bool force)
return connector_status_connected;
if (connector->force == DRM_FORCE_OFF)
return connector_status_disconnected;
return dcp_connector_connected(apple_connector) ?
connector_status_connected : connector_status_disconnected;
if (!dcp_connector_connected(apple_connector) ||
dcp_clamshell_hold_connector(apple_connector))
return connector_status_disconnected;
return connector_status_connected;
}

static void apple_connector_oob_hotplug(struct drm_connector *connector,
Expand Down
Loading