Repository navigation
Conversation
Rebuild the native port, GPIOs, requester/MSI routes and DART before PCI resumes the BCM4388 functions. Keep endpoint bus mastering disabled until the translation context is restored and the link and identities agree. Require both bound endpoint drivers to participate in the sleep transaction. A refused sleep restores the retained link without resetting it; a failed power-loss recovery stops before other DMA users resume. Enable the J713 radio and publish its CLKREQ GPIO with the host support. Add host lifecycle and register-failure fixtures. Signed-off-by: Erik Bourget <erik@ebourget.net>
16fdcb9 to
c856eff
Compare
f9e9c5e to
170c161
Compare
RyanTheTide
left a comment
There was a problem hiding this comment.
Changes needed on c856eff:
-
apple_radio_port_restore()writes a table of 19 raw{ offset, value }pairs (0x88,0x100,0x148,0x210,0x80,0x84,0x104,0x124,0x16c,0x13c,0x800,0x808,0x82c,0x130,0x140,0x144,0x21c,0x834,0x83c). Please give each register a named#define(reuse the existingPORT_*/CORE_*names inpcie-apple.cwhere they exist), build each value from named fields, and say in a comment where each value comes from. Do the same for theBIT(9)andBIT(10)set onport->phyafterRADIO_PHY_RESET. Where the probe path already programs a register, call that code instead of repeating the value. -
apple_radio_recover()compares against{ 0x443414e4, 0x5f7214e4 }. UsePCI_VENDOR_ID_BROADCOMand named device IDs (0x4434,0x5f72) instead. -
The CLKREQ/PERST pin check requires the pinctrl to be at
0x39a000000ULL. Theapple,t8132-pinctrlcompatible check and the phandle arguments are enough; please drop the hardcoded physical address. -
apple_radio_terminal()callspanic()and is reached fromapple_msi_domain_free()while the writer gate is closed. As in #1378, please fail closed with aWARNand an error state instead of panicking. -
pcie-apple.cdoes#include "pcie-apple-radio.c". Please build it as its own object. -
The
pcie-apple.cchanges to MSI allocation and free, and toapple_pcie_enable_device(), run on every Apple PCIe host, not only J713. The description only covers J713. Please add a boot and Wi-Fi/Bluetooth check on at least one other SoC (T8103/T8112/T600x) showing they are unaffected. -
CI has not run on this head.
|
Folded into #1314 (authorship kept), which carries the J713 radio sleep work from here on. Closing in favour of it. |
PR #1314 disables the J713 radio because its native PCIe port has no recovery path after deep sleep. Restore the port, GPIOs, requester/MSI routes and DART before resuming the BCM4388 functions. Keep endpoint bus mastering disabled until the link, device identities and translation context are ready.
Both endpoint drivers must participate before sleep proceeds. A refused sleep unwinds without resetting the retained link; an unsafe recovery failure stops before other DMA users resume. Enable the J713 radio and describe CLKREQ GPIO 160 in the same change. Include lifecycle and register-failure tests.
Part 3/5 of J713 native radio S2R, stacked on #1314 at
00f5d3e3f848.stack/j713-radio-pr1314mirrors that PR's head so each subsystem has a separate review diff in this repository.Series order: #1378 → #1381 → #1382 → #1383 → #1384.
Depends on #1381.
Validation on this base:
Qualification covers radio recovery in the minimal sleep profile. GPU, external displays and SIO/audio were excluded, SLC allocation remained off, and paired Bluetooth traffic was not tested.