Skip to content
Closed
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
26 changes: 26 additions & 0 deletions Documentation/arch/arm64/aurora-apif-centauri.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,29 @@ stops new transmission. Its key payload is cleared only after the transfer-ring
tail proves consumption; uncertain ownership keeps backing memory pinned.
Safe IPC teardown scrubs buffers after verified DMA shutdown. The cleaned
consumer still needs hardware traffic and suspend/resume qualification.

Bluetooth consumer
------------------

``CONFIG_BT_HCICENTAURI`` adds the Beta HCI/ACL PCI driver. A managed device
link requires the Control supplier to have established shared firmware and
orders removal and suspend against it. The Beta DT node supplies the factory
``local-mac-address`` in network byte order; no board-name or temporary-address
fallback selects initialization behavior.

Protocol-27 initialization provisions the address, completes firmware setup
and supplies a fresh random seed. The connection-command adaptation is enabled
only after the firmware's capability bit confirms support. Status and connection
completion events are normalized to the standard HCI command being tracked.
The firmware duplicate filter is reset in the HCI command-sync path before
filtered scanning starts; other drivers without that callback keep their
existing behavior. Standard report lengths are checked before applying the
matched legacy scan-response fixup.

The driver uses IRQ-triggered work and the original ring geometry. Diagnostic
capture, unrelated auxiliary rings, manual mode switches and success logging
are excluded. SCO and ISO delivery are not implemented. Coordinated firmware
teardown remains unqualified: a published Beta arena stays pinned on detach,
and rebinding requires a fresh shared-firmware boot. This is not a reset of the
Wi-Fi function. The cleaned driver still needs hardware HCI/ACL, repeated-scan
and suspend/resume qualification.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/bluetooth/apple,centauri.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Apple N1 Centauri Beta Bluetooth PCI function

maintainers:
- Dj <hey@djdev.me>

description: |
PCI function two is the Beta Bluetooth HCI/ACL transport. It depends on
the Control function in the same PCI slot, which boots the shared N1
firmware using the protocol profile described on its own DT node.
The factory address is supplied in network byte order for the firmware
address-provisioning command; HCI returns the standard Bluetooth order.

properties:
compatible:
const: pci106b,1903

reg:
maxItems: 1
description: Standard five-cell PCI function address

local-mac-address:
$ref: /schemas/types.yaml#/definitions/uint8-array
minItems: 6
maxItems: 6
description: Factory Bluetooth public address in network byte order

required:
- compatible
- reg
- local-mac-address

additionalProperties: false
3 changes: 3 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -4372,6 +4372,9 @@ L: linux-wireless@vger.kernel.org
S: Maintained
F: Documentation/arch/arm64/aurora-apif-centauri.rst
F: Documentation/devicetree/bindings/net/wireless/apple,centauri.yaml
F: Documentation/devicetree/bindings/net/bluetooth/apple,centauri.yaml
F: drivers/bluetooth/btcentauri.c
F: include/linux/apple-centauri.h
F: drivers/net/wireless/apple/

AURORA PLATFORM MMIO INTERFACE
Expand Down
2 changes: 2 additions & 0 deletions arch/arm64/configs/aurora-apif.config
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,5 @@ CONFIG_CFG80211=y
CONFIG_WLAN_VENDOR_APPLE=y
CONFIG_APPLE_CENTAURI=y
CONFIG_APPLE_CENTAURI_WIFI=y
CONFIG_BT=y
CONFIG_BT_HCICENTAURI=y
8 changes: 8 additions & 0 deletions drivers/bluetooth/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -533,3 +533,11 @@ config BT_INTEL_PCIE
Say Y here to compiler support for Intel Bluetooth PCIe device into
the kernel or say M to compile it as module (btintel_pcie)
endmenu

config BT_HCICENTAURI
tristate "Apple N1 Centauri Bluetooth"
depends on BT && PCI && APPLE_CENTAURI
help
Protocol-27 Beta HCI and ACL transport using the shared N1 firmware.
Requires the Control supplier and a DT-provided device address.
SCO and ISO delivery are not implemented by this driver.
2 changes: 2 additions & 0 deletions drivers/bluetooth/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,5 @@ hci_uart-$(CONFIG_BT_HCIUART_AML) += hci_aml.o
hci_uart-objs := $(hci_uart-y)

obj-$(CONFIG_BT_MTK7932_PCIE) += mt7932_bt_pcie.o

obj-$(CONFIG_BT_HCICENTAURI) += btcentauri.o
Loading