Re: [PATCH RFC] staging: Add driver to communicate with the T2 Security Chip

From: Robin Murphy
Date: Mon Mar 10 2025 - 09:49:28 EST


On 2025-03-09 8:40 am, Aditya Garg wrote:
From: Paul Pawlowski <paul@xxxxxxxx>

This patch adds a driver named apple-bce, to add support for the T2
Security Chip found on certain Macs.

The driver has 3 main components:

BCE (Buffer Copy Engine) - this is what the files in the root directory
are for. This estabilishes a basic communication channel with the T2.
VHCI and Audio both require this component.

VHCI - this is a virtual USB host controller; keyboard, mouse and
other system components are provided by this component (other
drivers use this host controller to provide more functionality).

Audio - a driver for the T2 audio interface, currently only audio
output is supported.

Currently, suspend and resume for VHCI is broken after a firmware
update in iBridge since macOS Sonoma.

Signed-off-by: Paul Pawlowski <paul@xxxxxxxx>
Signed-off-by: Aditya Garg <gargaditya08@xxxxxxxx>
---
drivers/staging/Kconfig | 2 +
drivers/staging/Makefile | 1 +
drivers/staging/apple-bce/Kconfig | 18 +
drivers/staging/apple-bce/Makefile | 28 +
drivers/staging/apple-bce/apple_bce.c | 448 ++++++++++
drivers/staging/apple-bce/apple_bce.h | 44 +
drivers/staging/apple-bce/audio/audio.c | 714 ++++++++++++++++
drivers/staging/apple-bce/audio/audio.h | 128 +++
drivers/staging/apple-bce/audio/description.h | 45 ++
drivers/staging/apple-bce/audio/pcm.c | 311 +++++++
drivers/staging/apple-bce/audio/pcm.h | 19 +
drivers/staging/apple-bce/audio/protocol.c | 350 ++++++++
drivers/staging/apple-bce/audio/protocol.h | 148 ++++
.../staging/apple-bce/audio/protocol_bce.c | 229 ++++++
.../staging/apple-bce/audio/protocol_bce.h | 75 ++
drivers/staging/apple-bce/mailbox.c | 154 ++++
drivers/staging/apple-bce/mailbox.h | 56 ++
drivers/staging/apple-bce/queue.c | 393 +++++++++
drivers/staging/apple-bce/queue.h | 180 +++++
drivers/staging/apple-bce/queue_dma.c | 223 +++++
drivers/staging/apple-bce/queue_dma.h | 53 ++
drivers/staging/apple-bce/vhci/command.h | 207 +++++
drivers/staging/apple-bce/vhci/queue.c | 271 +++++++
drivers/staging/apple-bce/vhci/queue.h | 79 ++
drivers/staging/apple-bce/vhci/transfer.c | 664 +++++++++++++++
drivers/staging/apple-bce/vhci/transfer.h | 76 ++
drivers/staging/apple-bce/vhci/vhci.c | 764 ++++++++++++++++++
drivers/staging/apple-bce/vhci/vhci.h | 55 ++
28 files changed, 5735 insertions(+)

I'm slightly puzzled why this was sent to the IOMMU maintainers when it doesn't touch any IOMMU code, nor even contain any reference to the IOMMU API at all...

Since I don't know enough about audio or USB code, all I can really say here is to echo Greg's comment that, judging by that diffstat alone, this probably wants to be at least 3-5 separate patches, adding each functional piece in manageable chunks.

Thanks,
Robin.