Skip to content
Merged
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
279 changes: 248 additions & 31 deletions arch/arm64/boot/dts/apple/t6041-j614c-j616c.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -1797,6 +1797,13 @@
remote-endpoint = <&dwc3_0_hs>;
};
};

port@1 {
reg = <1>;
typec0_connector_ss: endpoint {
remote-endpoint = <&atcphy0_ss>;
};
};
};
};
};
Expand Down Expand Up @@ -1837,6 +1844,13 @@
remote-endpoint = <&dwc3_1_hs>;
};
};

port@1 {
reg = <1>;
typec1_connector_ss: endpoint {
remote-endpoint = <&atcphy1_ss>;
};
};
};
};
};
Expand Down Expand Up @@ -1870,14 +1884,46 @@
remote-endpoint = <&dwc3_2_hs>;
};
};

port@1 {
reg = <1>;
typec2_connector_ss: endpoint {
remote-endpoint = <&atcphy2_ss>;
};
};
};
};
};
};

/* The left-back port, USB 2 as the other two. */
/*
* USB 3 on the three USB-C ports. The loader appends the PHY and controller
* tunables from the ADT, as on the M4 Pro, and disables a port it can't tune.
*/
&atcphy0 {
apple,tunable-usb2-host = <0x8 0x7003 0x3>;
status = "okay";

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

port@0 {
reg = <0>;
atcphy0_ss: endpoint {
remote-endpoint = <&typec0_connector_ss>;
};
};

port@1 {
reg = <1>;
atcphy0_usb3: endpoint {
remote-endpoint = <&dwc3_0_ss>;
};
};
};
};

&atcphy0_mbox {
status = "okay";
};

Expand All @@ -1890,15 +1936,6 @@
};

&dwc3_0 {
maximum-speed = "high-speed";
phys = <&atcphy0 PHY_TYPE_USB2>;
phy-names = "usb2-phy";
apple,tunable-gbl-host = <0x4 0x0001ef00 0x00002f00>, <0x1c 0x00000100 0x0>,
<0x2c 0x000a07ff 0x000800c8>, <0x100 0x02000100 0x02000100>,
<0x504 0x00001000 0x0>, <0x528 0xff0000ff 0x06000006>,
<0x52c 0xff0000ff 0x08000008>, <0x538 0x00000800 0x00000800>,
<0x580 0xffffffff 0x6f000006>;
apple,tunable-cfg-host = <0x20 0xff 0x1b>;
status = "okay";

ports {
Expand All @@ -1911,11 +1948,40 @@
remote-endpoint = <&typec0_connector_hs>;
};
};

port@1 {
reg = <1>;
dwc3_0_ss: endpoint {
remote-endpoint = <&atcphy0_usb3>;
};
};
};
};

&atcphy1 {
apple,tunable-usb2-host = <0x8 0x7003 0x3>;
status = "okay";

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

port@0 {
reg = <0>;
atcphy1_ss: endpoint {
remote-endpoint = <&typec1_connector_ss>;
};
};

port@1 {
reg = <1>;
atcphy1_usb3: endpoint {
remote-endpoint = <&dwc3_1_ss>;
};
};
};
};

&atcphy1_mbox {
status = "okay";
};

Expand All @@ -1928,15 +1994,6 @@
};

&dwc3_1 {
maximum-speed = "high-speed";
phys = <&atcphy1 PHY_TYPE_USB2>;
phy-names = "usb2-phy";
apple,tunable-gbl-host = <0x4 0x0001ef00 0x00002f00>, <0x1c 0x00000100 0x0>,
<0x2c 0x000a07ff 0x000800c8>, <0x100 0x02000100 0x02000100>,
<0x504 0x00001000 0x0>, <0x528 0xff0000ff 0x06000006>,
<0x52c 0xff0000ff 0x08000008>, <0x538 0x00000800 0x00000800>,
<0x580 0xffffffff 0x6f000006>;
apple,tunable-cfg-host = <0x20 0xff 0x1b>;
status = "okay";

ports {
Expand All @@ -1949,11 +2006,40 @@
remote-endpoint = <&typec1_connector_hs>;
};
};

port@1 {
reg = <1>;
dwc3_1_ss: endpoint {
remote-endpoint = <&atcphy1_usb3>;
};
};
};
};

&atcphy2 {
apple,tunable-usb2-host = <0x8 0x7003 0x3>;
status = "okay";

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

port@0 {
reg = <0>;
atcphy2_ss: endpoint {
remote-endpoint = <&typec2_connector_ss>;
};
};

port@1 {
reg = <1>;
atcphy2_usb3: endpoint {
remote-endpoint = <&dwc3_2_ss>;
};
};
};
};

&atcphy2_mbox {
status = "okay";
};

Expand All @@ -1966,15 +2052,6 @@
};

&dwc3_2 {
maximum-speed = "high-speed";
phys = <&atcphy2 PHY_TYPE_USB2>;
phy-names = "usb2-phy";
apple,tunable-gbl-host = <0x4 0x0001ef00 0x00002f00>, <0x1c 0x00000100 0x0>,
<0x2c 0x000a07ff 0x000800c8>, <0x100 0x02000100 0x02000100>,
<0x504 0x00001000 0x0>, <0x528 0xff0000ff 0x06000006>,
<0x52c 0xff0000ff 0x08000008>, <0x538 0x00000800 0x00000800>,
<0x580 0xffffffff 0x6f000006>;
apple,tunable-cfg-host = <0x20 0xff 0x1b>;
status = "okay";

ports {
Expand All @@ -1987,6 +2064,13 @@
remote-endpoint = <&typec2_connector_hs>;
};
};

port@1 {
reg = <1>;
dwc3_2_ss: endpoint {
remote-endpoint = <&atcphy2_usb3>;
};
};
};
};

Expand Down Expand Up @@ -2627,3 +2711,136 @@
&ps_qspi {
status = "okay";
};

/*
* DisplayPort/HDMI audio, as on the M4 Pro boards (t6040-j616s-dpaudio.dtsi).
* The J614c's ADT has the J616s's: dcpext0's audio is dp-audio1 (SIO DMA
* channel 0x66) and dcpext1's is dp-audio2 (0x68), and the PMGR has UART_P
* (0x1a0) and DPA_P (0x1a8) under SIO, and DPA1 (0x238) and DPA2 (0x240)
* under DPA_P. The SIO stays disabled here: the loader enables it once it has
* reserved the firmware iBoot loaded (it finds it by the alias).
*/
&pmgr {
ps_uart_p: power-controller@1a0 {
compatible = "apple,t6041-pmgr-pwrstate", "apple,t8103-pmgr-pwrstate";
reg = <0x1a0 4>;
#power-domain-cells = <0>;
#reset-cells = <0>;
label = "uart_p";
power-domains = <&ps_sio>;
};

ps_dpa_p: power-controller@1a8 {
compatible = "apple,t6041-pmgr-pwrstate", "apple,t8103-pmgr-pwrstate";
reg = <0x1a8 4>;
#power-domain-cells = <0>;
#reset-cells = <0>;
label = "dpa_p";
power-domains = <&ps_sio>;
apple,always-on;
};

ps_dpa1: power-controller@238 {
compatible = "apple,t6041-pmgr-pwrstate", "apple,t8103-pmgr-pwrstate";
reg = <0x238 4>;
#power-domain-cells = <0>;
#reset-cells = <0>;
label = "dpa1";
power-domains = <&ps_dpa_p>;
};

ps_dpa2: power-controller@240 {
compatible = "apple,t6041-pmgr-pwrstate", "apple,t8103-pmgr-pwrstate";
reg = <0x240 4>;
#power-domain-cells = <0>;
#reset-cells = <0>;
label = "dpa2";
power-domains = <&ps_dpa_p>;
};
};

/ {
aliases {
sio = &sio;
};

dpaudio1: audio-controller-1 {
compatible = "apple,t6041-dpaudio", "apple,dpaudio";
dmas = <&sio 0x66>;
dma-names = "tx";
power-domains = <&ps_dpa1>;

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

port@0 {
reg = <0>;
dpaudio1_dcpext: endpoint {
remote-endpoint = <&dcpext0_audio>;
};
};
};
};

dpaudio2: audio-controller-2 {
compatible = "apple,t6041-dpaudio", "apple,dpaudio";
dmas = <&sio 0x68>;
dma-names = "tx";
power-domains = <&ps_dpa2>;

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

port@0 {
reg = <0>;
dpaudio2_dcpext: endpoint {
remote-endpoint = <&dcpext1_audio>;
};
};
};
};
};

&dcpext0 {
ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
dcpext0_audio: endpoint {
remote-endpoint = <&dpaudio1_dcpext>;
};
};
};
};

&dcpext1 {
ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
dcpext1_audio: endpoint {
remote-endpoint = <&dpaudio2_dcpext>;
};
};
};
};

/* The SIO firmware drives the SPI, UART and DP audio shims: keep their parents on. */
&ps_sio_cpu {
power-domains = <&ps_sio>, <&ps_spi_p>, <&ps_uart_p>, <&ps_dpa_p>;
status = "okay";
};

&sio_dart {
status = "okay";
};

&sio_mbox {
status = "okay";
};
17 changes: 14 additions & 3 deletions arch/arm64/boot/dts/apple/t6041-j616c-hdmi.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*
* Every node is disabled. No DISPEXT0 power domain is described: the chain
* runs as iBoot leaves it powered. The boot loader fills dcpext0's firmware
* memory (the data and heap regions below; the text region is the internal
* memory (the regions below; it points the text region at the internal
* DCP's), and the display gate (drivers/soc/apple/display-gate.c) then
* enables the chain and adds dispext0's DART to the display subsystem's
* iommus.
Expand All @@ -17,6 +17,17 @@
};

reserved-memory {
/*
* The loader replaces this placeholder with the internal DCP's
* TEXT, which the external processors share, as on the M4 Pro.
*/
dcpext0_text: dcpext0-text {
compatible = "apple,asc-mem";
reg = <0x0 0x0 0x0 0x4000>;
no-map;
status = "disabled";
};

dcpext0_data: dcpext0-data {
compatible = "apple,asc-mem";
reg = <0x0 0x0 0x0 0x4000>;
Expand Down Expand Up @@ -46,8 +57,8 @@
mux-control-names = "dp-xbar";
mux-index = <0>;
apple,dptx-phy = <3>;
memory-region = <&dcpext0_data>, <&dcpext0_heap>;
memory-region-names = "data", "heap";
memory-region = <&dcpext0_text>, <&dcpext0_data>, <&dcpext0_heap>;
memory-region-names = "text", "data", "heap";
};

&atcphy3 {
Expand Down
Loading
Loading