[0/2] Apple T2 platform support

Message ID 20230214080034.3828-1-marcan@marcan.st
Headers
Series Apple T2 platform support |

Message

Hector Martin Feb. 14, 2023, 8 a.m. UTC
  Hi all,

This short series adds the missing bits to support Apple T2 platforms.

There are two quirks: these devices have firmware that requires the
host to provide a blob of randomness as a seed (presumably because the
chipsets lack a proper RNG), and the module/antenna information that
is used for Apple firmware selection and comes from the Device Tree
on ARM64 systems (already upstream) needs to come from ACPI on these
instead.

Changes since the megaseries from a ~year ago: made the ACPI code bail
if there is no module-instance, so we don't try to get the antenna
info at all in that case (as suggested by Arend). Made the randomness
conditional on an Apple OTP being present, since it's not known to be
needed on non-Apple firmware.

Hector Martin (2):
  brcmfmac: acpi: Add support for fetching Apple ACPI properties
  brcmfmac: pcie: Provide a buffer of random bytes to the device

 .../broadcom/brcm80211/brcmfmac/Makefile      |  2 +
 .../broadcom/brcm80211/brcmfmac/acpi.c        | 51 +++++++++++++++++++
 .../broadcom/brcm80211/brcmfmac/common.c      |  1 +
 .../broadcom/brcm80211/brcmfmac/common.h      |  9 ++++
 .../broadcom/brcm80211/brcmfmac/pcie.c        | 32 ++++++++++++
 5 files changed, 95 insertions(+)
 create mode 100644 drivers/net/wireless/broadcom/brcm80211/brcmfmac/acpi.c
  

Comments

Aditya Garg Feb. 23, 2023, 3:01 p.m. UTC | #1
Hi Hector

I’ve applied the following patchset (arranged in chronological order) to linux 6.2,
and wifi seems to have broken on MacBookPro16,1 (brcmfmac4364b3)

https://lore.kernel.org/asahi/20230212063813.27622-1-marcan@marcan.st/T/#t (BCM4355/4364/4377 support & identification fixes)

https://lore.kernel.org/asahi/20230214080034.3828-1-marcan@marcan.st/T/#t (Apple T2 platform support)

https://lore.kernel.org/asahi/20230214091651.10178-1-marcan@marcan.st/T/#t (BCM4387 / Apple M1 platform support)

https://lore.kernel.org/asahi/b4489e24-e226-4f99-1322-cab6c1269f09@broadcom.com/T/#t (brcmfmac: cfg80211: Use WSEC to set SAE password)


The logs show:

Feb 23 20:08:57 MacBook kernel: usbcore: registered new interface driver brcmfmac
Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: enabling device (0000 -> 0002)
Feb 23 20:08:57 MacBook kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4364b3-pcie for chip BCM4364/4
Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.Apple Inc.-MacBookPro16,1.bin failed with error -2
Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.bin failed with error -2
Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_setup: Dongle setup failed

I also tested the patchiest in the following link, and wifi mostly worked there (occasionally it complained about some pic error, I’ll save the logs next time I encounter that) :

https://github.com/t2linux/linux-t2-patches/blob/main/8001-asahilinux-wifi-patchset.patch

Thanks
Aditya

> On 14-Feb-2023, at 1:30 PM, Hector Martin <marcan@marcan.st> wrote:
> 
> Hi all,
> 
> This short series adds the missing bits to support Apple T2 platforms.
> 
> There are two quirks: these devices have firmware that requires the
> host to provide a blob of randomness as a seed (presumably because the
> chipsets lack a proper RNG), and the module/antenna information that
> is used for Apple firmware selection and comes from the Device Tree
> on ARM64 systems (already upstream) needs to come from ACPI on these
> instead.
> 
> Changes since the megaseries from a ~year ago: made the ACPI code bail
> if there is no module-instance, so we don't try to get the antenna
> info at all in that case (as suggested by Arend). Made the randomness
> conditional on an Apple OTP being present, since it's not known to be
> needed on non-Apple firmware.
> 
> Hector Martin (2):
>  brcmfmac: acpi: Add support for fetching Apple ACPI properties
>  brcmfmac: pcie: Provide a buffer of random bytes to the device
> 
> .../broadcom/brcm80211/brcmfmac/Makefile      |  2 +
> .../broadcom/brcm80211/brcmfmac/acpi.c        | 51 +++++++++++++++++++
> .../broadcom/brcm80211/brcmfmac/common.c      |  1 +
> .../broadcom/brcm80211/brcmfmac/common.h      |  9 ++++
> .../broadcom/brcm80211/brcmfmac/pcie.c        | 32 ++++++++++++
> 5 files changed, 95 insertions(+)
> create mode 100644 drivers/net/wireless/broadcom/brcm80211/brcmfmac/acpi.c
> 
> -- 
> 2.35.1
> 
>
  
Aditya Garg Feb. 23, 2023, 3:04 p.m. UTC | #2
> On 23-Feb-2023, at 8:31 PM, Aditya Garg <gargaditya08@live.com> wrote:
> 
> Hi Hector
> 
> I’ve applied the following patchset (arranged in chronological order) to linux 6.2,
> and wifi seems to have broken on MacBookPro16,1 (brcmfmac4364b3)
> 
> https://lore.kernel.org/asahi/20230212063813.27622-1-marcan@marcan.st/T/#t (BCM4355/4364/4377 support & identification fixes)
> 
> https://lore.kernel.org/asahi/20230214080034.3828-1-marcan@marcan.st/T/#t (Apple T2 platform support)
> 
> https://lore.kernel.org/asahi/20230214091651.10178-1-marcan@marcan.st/T/#t (BCM4387 / Apple M1 platform support)
> 
> https://lore.kernel.org/asahi/b4489e24-e226-4f99-1322-cab6c1269f09@broadcom.com/T/#t (brcmfmac: cfg80211: Use WSEC to set SAE password)
> 
> 
> The logs show:
> 
> Feb 23 20:08:57 MacBook kernel: usbcore: registered new interface driver brcmfmac
> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: enabling device (0000 -> 0002)
> Feb 23 20:08:57 MacBook kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4364b3-pcie for chip BCM4364/4
> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.Apple Inc.-MacBookPro16,1.bin failed with error -2
> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.bin failed with error -2
> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_setup: Dongle setup failed
> 
> I also tested the patchiest in the following link, and wifi mostly worked there (occasionally it complained about some pic error, I’ll save the logs next time I encounter that) :
> 

Sorry for the typos here (thanks to autocorrect)

It says

I also tested the *patchset* in the following link, and wifi mostly worked there (occasionally it complained about some *pci* error, I’ll save the logs next time I encounter that) :
> 
> https://github.com/t2linux/linux-t2-patches/blob/main/8001-asahilinux-wifi-patchset.patch
> 
> Thanks
> Aditya
> 
>> On 14-Feb-2023, at 1:30 PM, Hector Martin <marcan@marcan.st> wrote:
>> 
>> Hi all,
>> 
>> This short series adds the missing bits to support Apple T2 platforms.
>> 
>> There are two quirks: these devices have firmware that requires the
>> host to provide a blob of randomness as a seed (presumably because the
>> chipsets lack a proper RNG), and the module/antenna information that
>> is used for Apple firmware selection and comes from the Device Tree
>> on ARM64 systems (already upstream) needs to come from ACPI on these
>> instead.
>> 
>> Changes since the megaseries from a ~year ago: made the ACPI code bail
>> if there is no module-instance, so we don't try to get the antenna
>> info at all in that case (as suggested by Arend). Made the randomness
>> conditional on an Apple OTP being present, since it's not known to be
>> needed on non-Apple firmware.
>> 
>> Hector Martin (2):
>> brcmfmac: acpi: Add support for fetching Apple ACPI properties
>> brcmfmac: pcie: Provide a buffer of random bytes to the device
>> 
>> .../broadcom/brcm80211/brcmfmac/Makefile      |  2 +
>> .../broadcom/brcm80211/brcmfmac/acpi.c        | 51 +++++++++++++++++++
>> .../broadcom/brcm80211/brcmfmac/common.c      |  1 +
>> .../broadcom/brcm80211/brcmfmac/common.h      |  9 ++++
>> .../broadcom/brcm80211/brcmfmac/pcie.c        | 32 ++++++++++++
>> 5 files changed, 95 insertions(+)
>> create mode 100644 drivers/net/wireless/broadcom/brcm80211/brcmfmac/acpi.c
>> 
>> -- 
>> 2.35.1
>> 
>> 
>
  
Aditya Garg Feb. 24, 2023, 7:06 a.m. UTC | #3
> 
> I also tested the *patchset* in the following link, and wifi mostly worked there (occasionally it complained about some *pci* error, I’ll save the logs next time I encounter that) :

I got the logs as follows:

Feb 24 12:04:50 MacBook kernel: usbcore: registered new interface driver brcmfmac
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: enabling device (0000 -> 0002)
Feb 24 12:04:50 MacBook kernel: brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4364b3-pcie for chip BCM4364/4
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.apple,bali-HRPN-u-7.7-X3.bin failed with error -2
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.apple,bali-HRPN-u-7.7.bin failed with error -2
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.apple,bali-HRPN-u.bin failed with error -2
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.apple,bali-HRPN.bin failed with error -2
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for brcm/brcmfmac4364b3-pcie.apple,bali-X3.bin failed with error -2
Feb 24 12:04:50 MacBook kernel: brcmfmac_bca: brcmf_bca_attach: executing
Feb 24 12:04:50 MacBook kernel: brcmfmac_bca: brcmf_bca_detach: executing
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_setup: Dongle setup failed
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 0000.853 EL: 30 3e84
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.853 Thread: wlan_thread(ID:0x54485244) run cnt:2
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.854 Thread: Stack:0029ff34 Start Addr:0029e000 End Addr:0029ffdf Size:8160
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.854 Thread: Entry func:0016f819
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.854 Thread: Timer:001ca70c
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.854 
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: FWID 01-23419ed2
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: flags 78010007
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.854 
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: TRAP 4(29fef8): pc 16e218, lr 16e205, sp 29ff50, cpsr 60000193, spsr 60000033
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.855   dfsr 80d, dfar 0
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.855   r0 1, r1 0, r2 160988, r3 0, r4 167f35, r5 1, r6 167f35
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.855   r7 0, r8 0, r9 0, r10 29e000, r11 80d, r12 0
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.855 
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE:    sp+0 00280648 00019783 00000000 00167f35
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.856   sp+10 00280648 00168301 00236ec4 00000002
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.856 sp+4 00019783
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.856 sp+c 00167f35
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.856 sp+14 00168301
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.856 sp+2c 00019783
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.856 sp+34 0003910f
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.857 sp+44 0016f8e7
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.857 sp+4c 0003d1c5
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.857 sp+60 0000c02b
Feb 24 12:04:50 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_bus_console_read: CONSOLE: 000000.857 sp+6c 0003dfcd
  
Kalle Valo Feb. 24, 2023, 1:11 p.m. UTC | #4
Aditya Garg <gargaditya08@live.com> writes:

>  On 23-Feb-2023, at 8:31 PM, Aditya Garg <gargaditya08@live.com> wrote:
>
>  Hi Hector
>
>  I’ve applied the following patchset (arranged in chronological order) to linux 6.2,
>  and wifi seems to have broken on MacBookPro16,1 (brcmfmac4364b3)
>
>  https://lore.kernel.org/asahi/20230212063813.27622-1-marcan@marcan.st/T/#t
>  (BCM4355/4364/4377 support & identification fixes)
>
>  https://lore.kernel.org/asahi/20230214080034.3828-1-marcan@marcan.st/T/#t (Apple T2
>  platform support)
>
>  https://lore.kernel.org/asahi/20230214091651.10178-1-marcan@marcan.st/T/#t (BCM4387
>  / Apple M1 platform support)
>
>  https://lore.kernel.org/asahi/b4489e24-e226-4f99-1322-cab6c1269f09@broadcom.com/T/#t
>  (brcmfmac: cfg80211: Use WSEC to set SAE password)
>
>  The logs show:
>
>  Feb 23 20:08:57 MacBook kernel: usbcore: registered new interface driver brcmfmac
>  Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: enabling device (0000 -> 0002)
>  Feb 23 20:08:57 MacBook kernel: brcmfmac: brcmf_fw_alloc_request: using
>  brcm/brcmfmac4364b3-pcie for chip BCM4364/4
>  Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for
>  brcm/brcmfmac4364b3-pcie.Apple Inc.-MacBookPro16,1.bin failed with error -2
>  Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for
>  brcm/brcmfmac4364b3-pcie.bin failed with error -2
>  Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_setup: Dongle setup
>  failed
>
>  I also tested the patchiest in the following link, and wifi mostly worked there (occasionally it
>  complained about some pic error, I’ll save the logs next time I encounter that) :
>
>  https://github.com/t2linux/linux-t2-patches/blob/main/8001-asahilinux-wifi-patchset.patch
>
>  Thanks
>  Aditya
>
> I just noticed that the patch to ACPI was missing. Adding that fixed the issue.
>
> https://github.com/t2linux/linux-t2-patches/blob/main/8005-ACPI-property-Support-strings-in-Apple-_DSM-props.patch

Please don't use HTML, our lists drop those. I'll reply in text/plain so
that is info is archived.
  
Aditya Garg Feb. 24, 2023, 1:22 p.m. UTC | #5
> On 24-Feb-2023, at 6:42 PM, Kalle Valo <kvalo@kernel.org> wrote:
> 
> Aditya Garg <gargaditya08@live.com> writes:
> 
>> On 23-Feb-2023, at 8:31 PM, Aditya Garg <gargaditya08@live.com> wrote:
>> 
>> Hi Hector
>> 
>> I’ve applied the following patchset (arranged in chronological order) to linux 6.2,
>> and wifi seems to have broken on MacBookPro16,1 (brcmfmac4364b3)
>> 
>> https://lore.kernel.org/asahi/20230212063813.27622-1-marcan@marcan.st/T/#t
>> (BCM4355/4364/4377 support & identification fixes)
>> 
>> https://lore.kernel.org/asahi/20230214080034.3828-1-marcan@marcan.st/T/#t (Apple T2
>> platform support)
>> 
>> https://lore.kernel.org/asahi/20230214091651.10178-1-marcan@marcan.st/T/#t (BCM4387
>> / Apple M1 platform support)
>> 
>> https://lore.kernel.org/asahi/b4489e24-e226-4f99-1322-cab6c1269f09@broadcom.com/T/#t
>> (brcmfmac: cfg80211: Use WSEC to set SAE password)
>> 
>> The logs show:
>> 
>> Feb 23 20:08:57 MacBook kernel: usbcore: registered new interface driver brcmfmac
>> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: enabling device (0000 -> 0002)
>> Feb 23 20:08:57 MacBook kernel: brcmfmac: brcmf_fw_alloc_request: using
>> brcm/brcmfmac4364b3-pcie for chip BCM4364/4
>> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for
>> brcm/brcmfmac4364b3-pcie.Apple Inc.-MacBookPro16,1.bin failed with error -2
>> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: Direct firmware load for
>> brcm/brcmfmac4364b3-pcie.bin failed with error -2
>> Feb 23 20:08:57 MacBook kernel: brcmfmac 0000:05:00.0: brcmf_pcie_setup: Dongle setup
>> failed
>> 
>> I also tested the patchiest in the following link, and wifi mostly worked there (occasionally it
>> complained about some pic error, I’ll save the logs next time I encounter that) :
>> 
>> https://github.com/t2linux/linux-t2-patches/blob/main/8001-asahilinux-wifi-patchset.patch
>> 
>> Thanks
>> Aditya
>> 
>> I just noticed that the patch to ACPI was missing. Adding that fixed the issue.
>> 
>> https://github.com/t2linux/linux-t2-patches/blob/main/8005-ACPI-property-Support-strings-in-Apple-_DSM-props.patch
> 
> Please don't use HTML, our lists drop those. I'll reply in text/plain so
> that is info is archived.
> 
Hi

Sorry for that. I actually forgot to format that email as plain text.
> -- 
> https://patchwork.kernel.org/project/linux-wireless/list/
> 
> https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches