I've finally just submitted the RFC series for USB3 support on Apple Silicon machines. RFC because the entire Type-C machinery spans multiple subsystems and has quite a few quirks which makes the entire thing rather annoying to deal with and I'm not 100% convinced about the current approach.
This also includes some initial work for DisplayPort-altmode and USB4/Thunderbolt but both will require much more work after this is upstream, so don't get your hopes up just yet.
https://lore.kernel.org/asahi/20250821-atcphy-6-17-v1-0-172beda182b8@kernel.org/
I learned a new thing in macro_rules! i.e., pattern matching:
tpm_struct! {
#[derive(Debug, Default, PartialEq, Eq, Clone)]
kind: Command,
name: TpmStartAuthSessionCommand,
cc: TpmCc::StartAuthSession,
no_sessions: true,
with_sessions: true,
handles: {
pub tpm_key: crate::data::TpmiDhObject,
pub bind: crate::data::TpmiDhObject,
},
parameters: {
pub nonce_caller: Tpm2bNonce,
pub encrypted_salt: Tpm2b,
pub session_type: TpmSe,
pub symmetric: TpmtSymDefObject,
pub auth_hash: TpmAlgId,
}
}
tpm_struct! {
#[derive(Debug, Default, PartialEq, Eq, Clone)]
kind: Response,
name: TpmStartAuthSessionResponse,
cc: TpmCc::StartAuthSession,
no_sessions: true,
with_sessions: true,
handles: {
pub session_handle: TpmSession,
},
parameters: {
pub nonce_tpm: Tpm2bNonce,
}
}