Index | Thread | Search

From:
Patrick Wildt <patrick@blueri.se>
Subject:
Re: BCM4388 support in bwfm(4)
To:
Bryan Vyhmeister <bryan@bsdjournal.net>
Cc:
tech@openbsd.org
Date:
Mon, 15 Jul 2024 23:33:09 +0200

Download raw body.

Thread
Am Mon, Jul 08, 2024 at 11:44:34AM -0700 schrieb Bryan Vyhmeister:
> Hey Patrick,
> 
> It has been quite a while since I have emailed you. I picked up a Mac
> mini with M2 Pro chip for OpenBSD/arm64 and found that it has a BCM4388.
> I noticed the BCM4388 is defined in pcidevs but could not locate any
> BCM4388 support in bwfm(4). Is this a much different wireless chipset or
> would it be easy to support in bwfm(4)?
> 
> My dmesg and pcidevs output are below.

Sorry for the late reply.  As far as I know kettenis@ had been working
on supporting that chipset, but I think he ran into some problems.  So
I figure he'll just send out something when it's ready?

> On a second note, since you're working on the Snapdragon X Elite support
> with the Lenovo Slim 7x, do you think that would likely extend well to
> the ThinkPad T14s Gen 6 Snapdragon model? I'm sure the Qualcomm Wi-Fi
> NCM825A might be a problem but that's also the same as the Slim 7x I
> think since qwx(4) does not mention that model although I see quite a
> bit of work happening on qwx(4). I'm waiting for the option to custom
> configure the ThinkPad T14s Gen 6 Snapdragon so I can select what
> components I want (memory and SSD) and hopefully bring the cost down
> some. Any thoughts on this? Thank you again for all your contributions
> to OpenBSD!

ath12k seems to be a smaller iteration from ath11k.  Still, there are
quite some changes and I'm currently fighting with firmware that just
crashes without telling me what's up.  I have no idea how long it'll
take but I'm sure eventually we'll also support ath12k.  Regarding GPU
acceleration or sound support, I honestly have more faith in the Apple
Silicon devices, but who knows.  That said, I guess from all the X Elite
I have some hope that the T14s will be pretty good.  I know some already
have it ordered, so let's see what happens once they show up. :)

Cheers,
Patrick

> Bryan
> 
> 
> OpenBSD 7.5-current (GENERIC.MP) #103: Fri Jul  5 23:12:32 MDT 2024
>     deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP
> real mem  = 16619151360 (15849MB)
> avail mem = 15970148352 (15230MB)
> random: good seed from bootblocks
> mainbus0 at root: Apple Mac Mini (M2 Pro, 2023)
> efi0 at mainbus0: UEFI 2.10
> efi0: Das U-Boot rev 0x20240100
> cpu0 at mainbus0 mpidr 0: Apple Blizzard Pro r1p0
> cpu0: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache
> cpu0: 4096KB 128b/line 16-way L2 cache
> cpu0: TLBIOS+IRANGE,TS+AXFLAG,FHM,DP,SHA3,RDM,Atomic,CRC32,SHA2+SHA512,SHA1,AES+PMULL,I8MM,BF16,SPECRES,SB,FRINTTS,GPI,LRCPC+LDAPUR,FCMA,JSCVT,API+PAC,DPB,SpecSEI,PAN+ATS1E1,LO,HPDS,VH,CSV3,CSV2,DIT,BT,SSBS+MSR
> cpu1 at mainbus0 mpidr 1: Apple Blizzard Pro r1p0
> cpu1: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache
> cpu1: 4096KB 128b/line 16-way L2 cache
> cpu2 at mainbus0 mpidr 2: Apple Blizzard Pro r1p0
> cpu2: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache
> cpu2: 4096KB 128b/line 16-way L2 cache
> cpu3 at mainbus0 mpidr 3: Apple Blizzard Pro r1p0
> cpu3: 128KB 64b/line 4-way L1 PIPT I-cache, 64KB 64b/line 8-way L1 D-cache
> cpu3: 4096KB 128b/line 16-way L2 cache
> cpu4 at mainbus0 mpidr 10100: Apple Avalanche Pro r1p0
> cpu4: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache
> cpu4: 16384KB 128b/line 16-way L2 cache
> cpu5 at mainbus0 mpidr 10101: Apple Avalanche Pro r1p0
> cpu5: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache
> cpu5: 16384KB 128b/line 16-way L2 cache
> cpu6 at mainbus0 mpidr 10102: Apple Avalanche Pro r1p0
> cpu6: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache
> cpu6: 16384KB 128b/line 16-way L2 cache
> cpu7 at mainbus0 mpidr 10200: Apple Avalanche Pro r1p0
> cpu7: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache
> cpu7: 16384KB 128b/line 16-way L2 cache
> cpu8 at mainbus0 mpidr 10201: Apple Avalanche Pro r1p0
> cpu8: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache
> cpu8: 16384KB 128b/line 16-way L2 cache
> cpu9 at mainbus0 mpidr 10202: Apple Avalanche Pro r1p0
> cpu9: 192KB 64b/line 6-way L1 PIPT I-cache, 128KB 64b/line 8-way L1 D-cache
> cpu9: 16384KB 128b/line 16-way L2 cache
> "framebuffer" at mainbus0 not configured
> "asc-firmware" at mainbus0 not configured
> "asc-firmware" at mainbus0 not configured
> "asc-firmware" at mainbus0 not configured
> "uat-handoff" at mainbus0 not configured
> "uat-pagetables" at mainbus0 not configured
> "uat-ttbs" at mainbus0 not configured
> apm0 at mainbus0
> "opp-table-0" at mainbus0 not configured
> "opp-table-1" at mainbus0 not configured
> "opp-table-gpu" at mainbus0 not configured
> "opp-table-gpu-cs" at mainbus0 not configured
> "opp-table-gpu-afr" at mainbus0 not configured
> "pmu-e" at mainbus0 not configured
> "pmu-p" at mainbus0 not configured
> agtimer0 at mainbus0: 24000 kHz
> "clock-ref" at mainbus0 not configured
> "clock-200m" at mainbus0 not configured
> "clock-disp0" at mainbus0 not configured
> "clock-dispext0" at mainbus0 not configured
> "clock-dispext0_die1" at mainbus0 not configured
> "clock-dispext1" at mainbus0 not configured
> "clock-dispext1_die1" at mainbus0 not configured
> "clock-ref-nco" at mainbus0 not configured
> simplebus0 at mainbus0: "soc"
> aplpmgr0 at simplebus0
> aplpmgr1 at simplebus0
> aplpmgr2 at simplebus0
> aplpmgr3 at simplebus0
> aplintc0 at simplebus0 nirq 1961 ndie 1
> apldog0 at simplebus0
> aplmbox0 at simplebus0
> aplpinctrl0 at simplebus0
> apldart0 at simplebus0 rev 2.0: 42 bits, locked
> aplmbox1 at simplebus0
> apldart1 at simplebus0 rev 2.0: 42 bits, bypass
> aplmbox2 at simplebus0
> apldart2 at simplebus0 rev 2.0: 42 bits, bypass
> apldart3 at simplebus0 rev 2.0: 42 bits, bypass
> apldart4 at simplebus0 rev 2.0: 42 bits, bypass
> apldart5 at simplebus0 rev 2.0: 42 bits, locked
> apldart6 at simplebus0 rev 2.0: 42 bits, locked
> aplmbox3 at simplebus0
> aplpinctrl1 at simplebus0
> aplefuse0 at simplebus0
> aplpinctrl2 at simplebus0
> aplpinctrl3 at simplebus0
> apldart7 at simplebus0 rev 2.0: 42 bits, bypass
> apldart8 at simplebus0 rev 2.0: 42 bits, bypass
> apldart9 at simplebus0 rev 2.0: 42 bits, bypass
> apldart10 at simplebus0 rev 2.0: 42 bits, bypass
> apldart11 at simplebus0 rev 2.0: 42 bits, bypass
> apldart12 at simplebus0 rev 2.0: 42 bits, bypass
> apldart13 at simplebus0 rev 2.0: 42 bits, bypass
> apldart14 at simplebus0 rev 2.0: 42 bits, bypass
> aplmbox4 at simplebus0
> aplnco0 at simplebus0
> "power-management" at simplebus0 not configured
> aplspmi0 at simplebus0
> aplpmu0 at aplspmi0 sid 0xb
> aplsmc0 at simplebus0
> apldrm0 at simplebus0
> drm0 at apldrm0
> apliic0 at simplebus0
> iic0 at apliic0
> tipd0 at iic0 addr 0x38
> tipd1 at iic0 addr 0x3f
> tipd2 at iic0 addr 0x3b
> tipd3 at iic0 addr 0x3c
> apliic1 at simplebus0
> iic1 at apliic1
> sncodec0 at iic1 addr 0x38
> apliic2 at simplebus0
> iic2 at apliic2
> "cirrus,cs42l84" at iic2 addr 0x4b not configured
> aplspi0 at simplebus0
> exuart0 at simplebus0
> apldma0 at simplebus0
> aplmca0 at simplebus0
> "gpu" at simplebus0 not configured
> aplpcie0 at simplebus0
> pci0 at aplpcie0
> ppb0 at pci0 dev 0 function 0 "Apple M1 PCIe" rev 0x01
> pci1 at ppb0 bus 1
> "Broadcom BCM4388" rev 0x04 at pci1 dev 0 function 0 not configured
> vendor "Broadcom", unknown product 0x5f72 (class network subclass miscellaneous, rev 0x04) at pci1 dev 0 function 1 not configured
> ppb1 at pci0 dev 1 function 0 "Apple M1 PCIe" rev 0x01
> pci2 at ppb1 bus 2
> ppb2 at pci0 dev 2 function 0 "Apple M1 PCIe" rev 0x01
> pci3 at ppb2 bus 3
> bge0 at pci3 dev 0 function 0 "Broadcom BCM57762" rev 0x00, BCM57766 A0 (0x57766000): msi, address 5c:e9:1e:12:34:56
> brgphy0 at bge0 phy 1: BCM57765 10/100/1000baseT PHY, rev. 0
> ppb3 at pci0 dev 3 function 0 "Apple M1 PCIe" rev 0x01
> pci4 at ppb3 bus 4
> xhci0 at pci4 dev 0 function 0 "ASMedia ASM2142 xHCI" rev 0x00: msix, xHCI 1.10
> usb0 at xhci0: USB revision 3.0
> uhub0 at usb0 configuration 1 interface 0 "ASMedia xHCI root hub" rev 3.00/1.00 addr 1
> aplcpu0 at simplebus0
> aplcpu1 at simplebus0
> aplcpu2 at simplebus0
> apldcp0 at simplebus0
> "phy" at simplebus0 not configured
> xhci1 at simplebus0, xHCI 1.10
> usb1 at xhci1: USB revision 3.0
> uhub1 at usb1 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr 1
> "phy" at simplebus0 not configured
> xhci2 at simplebus0, xHCI 1.10
> usb2 at xhci2: USB revision 3.0
> uhub2 at usb2 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr 1
> "phy" at simplebus0 not configured
> xhci3 at simplebus0, xHCI 1.10
> usb3 at xhci3: USB revision 3.0
> uhub3 at usb3 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr 1
> "phy" at simplebus0 not configured
> xhci4 at simplebus0, xHCI 1.10
> usb4 at xhci4: USB revision 3.0
> uhub4 at usb4 configuration 1 interface 0 "Generic xHCI root hub" rev 3.00/1.00 addr 1
> "phy" at simplebus0 not configured
> aplsart0 at simplebus0
> aplns0 at simplebus0
> nvme0 at aplns0: NVMe 1.1
> nvme0: APPLE SSD AP0512Z, firmware 373.120., serial 0ba01ee112345678
> scsibus0 at nvme0: 2 targets, initiator 0
> sd0 at scsibus0 targ 1 lun 0: <NVMe, APPLE SSD AP0512, 373.>
> sd0: 477102MB, 4096 bytes/sector, 122138133 sectors
> aplaudio0 at mainbus0
> audio0 at aplaudio0
> uhidev0 at uhub0 port 3 configuration 1 interface 0 "SINOWEALTH Wired Gaming Mouse" rev 1.10/1.03 addr 2
> uhidev0: iclass 3/1
> ums0 at uhidev0: 5 buttons, Z and W dir
> wsmouse0 at ums0 mux 0
> uhidev1 at uhub0 port 3 configuration 1 interface 1 "SINOWEALTH Wired Gaming Mouse" rev 1.10/1.03 addr 2
> uhidev1: iclass 3/1, 7 report ids
> ukbd0 at uhidev1 reportid 1: 8 variable keys, 6 key codes
> wskbd0 at ukbd0: console keyboard
> ucc0 at uhidev1 reportid 2: 24 usages, 13 keys, enum
> wskbd1 at ucc0 mux 1
> uhid0 at uhidev1 reportid 4: input=0, output=0, feature=255
> uhid1 at uhidev1 reportid 5: input=0, output=0, feature=5
> uhid2 at uhidev1 reportid 7: input=7, output=0, feature=0
> uhidev2 at uhub0 port 4 configuration 1 interface 0 "Cooler Master Technology Inc. MasterKeys S" rev 1.10/1.03 addr 3
> uhidev2: iclass 3/1
> ukbd1 at uhidev2: 8 variable keys, 6 key codes
> wskbd2 at ukbd1 mux 1
> uhidev3 at uhub0 port 4 configuration 1 interface 1 "Cooler Master Technology Inc. MasterKeys S" rev 1.10/1.03 addr 3
> uhidev3: iclass 3/0
> uhid3 at uhidev3: input=64, output=64, feature=0
> uhidev4 at uhub0 port 4 configuration 1 interface 2 "Cooler Master Technology Inc. MasterKeys S" rev 1.10/1.03 addr 3
> uhidev4: iclass 3/0, 4 report ids
> uhid4 at uhidev4 reportid 1: input=1, output=0, feature=0
> ucc1 at uhidev4 reportid 2: 18 usages, 13 keys, enum
> wskbd3 at ucc1 mux 1
> ukbd2 at uhidev4 reportid 4: no usable key codes array
> vscsi0 at root
> scsibus1 at vscsi0: 256 targets
> softraid0 at root
> scsibus2 at softraid0: 256 targets
> sd1 at scsibus2 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
> sd1: 404843MB, 4096 bytes/sector, 103639961 sectors
> root on sd1a (b8e6f72fe1b178f7.a) swap on sd1b dump on sd1b
> drm:pid0:iomfb_poweron_v13_3 *ERROR* dcp_poweron() starting
> apldrm0: 3840x2160, 32bpp
> wsdisplay0 at apldrm0 mux 1: console (std, vt100 emulation), using wskbd0
> wskbd1: connecting to wsdisplay0
> wskbd2: connecting to wsdisplay0
> wskbd3: connecting to wsdisplay0
> wsdisplay0: screen 1-5 added (std, vt100 emulation)
> "framebuffer" at mainbus0 not configured
> 
> 
> 
> Domain /dev/pci0:
>  0:0:0: Apple M1 PCIe
> 	0x0000: Vendor ID: 106b, Product ID: 100c
> 	0x0004: Command: 0006, Status: 0010
> 	0x0008:	Class: 06 Bridge, Subclass: 04 PCI,
> 		Interface: 00, Revision: 01
> 	0x000c: BIST: 00, Header Type: 01, Latency Timer: 00,
> 		Cache Line Size: 08
> 	0x0010: BAR empty (00000000)
> 	0x0014: BAR empty (00000000)
> 	0x0018: Primary Bus: 0, Secondary Bus: 1, Subordinate Bus: 1,
> 		Secondary Latency Timer: 00
> 	0x001c: I/O Base: f0, I/O Limit: 00, Secondary Status: 2000
> 	0x0020: Memory Base: c200, Memory Limit: c3f0
> 	0x0024: Prefetch Memory Base: a001, Prefetch Memory Limit: 9ff1
> 	0x0028: Prefetch Memory Base Upper 32 Bits: 00000005
> 	0x002c: Prefetch Memory Limit Upper 32 Bits: 00000005
> 	0x0030: I/O Base Upper 16 Bits: 0000, I/O Limit Upper 16 Bits: 0000
> 	0x0038: Expansion ROM Base Address: 00000000
> 	0x003c: Interrupt Pin: 01, Line: ff, Bridge Control: 0000
> 	0x0040: Capability 0x01: Power Management
> 		State: D0
> 	0x0050: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 1 vectors (1 enabled)
> 	0x0070: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 256 bytes
> 		Max Read Request Size: 128 bytes
> 		Link Speed: 5.0 / 5.0 GT/s
> 		Link Width: x1 / x1
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x0148: Enhanced Capability 0x19: Secondary PCIe Capability
> 	0x0158: Enhanced Capability 0x26: Physical Layer 16.0 GT/s
> 	0x017c: Enhanced Capability 0x27: Lane Margining at the Receiver
> 	0x0194: Enhanced Capability 0x1e: L1 PM
> 	0x01a4: Enhanced Capability 0x0b: Vendor-Specific
> 	0x02a4: Enhanced Capability 0x25: Data Link Feature 
> 	0x02b0: Enhanced Capability 0x1f: Precision Time Measurement
> 	0x02bc: Enhanced Capability 0x0b: Vendor-Specific
>  0:1:0: Apple M1 PCIe
> 	0x0000: Vendor ID: 106b, Product ID: 100c
> 	0x0004: Command: 0006, Status: 0010
> 	0x0008:	Class: 06 Bridge, Subclass: 04 PCI,
> 		Interface: 00, Revision: 01
> 	0x000c: BIST: 00, Header Type: 01, Latency Timer: 00,
> 		Cache Line Size: 08
> 	0x0010: BAR empty (00000000)
> 	0x0014: BAR empty (00000000)
> 	0x0018: Primary Bus: 0, Secondary Bus: 2, Subordinate Bus: 2,
> 		Secondary Latency Timer: 00
> 	0x001c: I/O Base: f0, I/O Limit: 00, Secondary Status: 0000
> 	0x0020: Memory Base: c000, Memory Limit: bff0
> 	0x0024: Prefetch Memory Base: a001, Prefetch Memory Limit: 9ff1
> 	0x0028: Prefetch Memory Base Upper 32 Bits: 00000005
> 	0x002c: Prefetch Memory Limit Upper 32 Bits: 00000005
> 	0x0030: I/O Base Upper 16 Bits: 0000, I/O Limit Upper 16 Bits: 0000
> 	0x0038: Expansion ROM Base Address: 00000000
> 	0x003c: Interrupt Pin: 01, Line: ff, Bridge Control: 0000
> 	0x0040: Capability 0x01: Power Management
> 		State: D0
> 	0x0050: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 1 vectors (1 enabled)
> 	0x0070: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 256 bytes
> 		Max Read Request Size: 512 bytes
> 		Link Speed: 2.5 / 16.0 GT/s
> 		Link Width: x1 / x2
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x0148: Enhanced Capability 0x19: Secondary PCIe Capability
> 	0x0158: Enhanced Capability 0x26: Physical Layer 16.0 GT/s
> 	0x017c: Enhanced Capability 0x27: Lane Margining at the Receiver
> 	0x0194: Enhanced Capability 0x1e: L1 PM
> 	0x01a4: Enhanced Capability 0x0b: Vendor-Specific
> 	0x02a4: Enhanced Capability 0x25: Data Link Feature 
> 	0x02b0: Enhanced Capability 0x1f: Precision Time Measurement
> 	0x02bc: Enhanced Capability 0x0b: Vendor-Specific
>  0:2:0: Apple M1 PCIe
> 	0x0000: Vendor ID: 106b, Product ID: 100c
> 	0x0004: Command: 0006, Status: 0010
> 	0x0008:	Class: 06 Bridge, Subclass: 04 PCI,
> 		Interface: 00, Revision: 01
> 	0x000c: BIST: 00, Header Type: 01, Latency Timer: 00,
> 		Cache Line Size: 08
> 	0x0010: BAR empty (00000000)
> 	0x0014: BAR empty (00000000)
> 	0x0018: Primary Bus: 0, Secondary Bus: 3, Subordinate Bus: 3,
> 		Secondary Latency Timer: 00
> 	0x001c: I/O Base: f0, I/O Limit: 00, Secondary Status: 0000
> 	0x0020: Memory Base: c000, Memory Limit: c000
> 	0x0024: Prefetch Memory Base: a001, Prefetch Memory Limit: a001
> 	0x0028: Prefetch Memory Base Upper 32 Bits: 00000005
> 	0x002c: Prefetch Memory Limit Upper 32 Bits: 00000005
> 	0x0030: I/O Base Upper 16 Bits: 0000, I/O Limit Upper 16 Bits: 0000
> 	0x0038: Expansion ROM Base Address: 00000000
> 	0x003c: Interrupt Pin: 01, Line: ff, Bridge Control: 0000
> 	0x0040: Capability 0x01: Power Management
> 		State: D0
> 	0x0050: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 1 vectors (1 enabled)
> 	0x0070: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 256 bytes
> 		Max Read Request Size: 128 bytes
> 		Link Speed: 2.5 / 8.0 GT/s
> 		Link Width: x1 / x1
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x0148: Enhanced Capability 0x19: Secondary PCIe Capability
> 	0x0158: Enhanced Capability 0x26: Physical Layer 16.0 GT/s
> 	0x017c: Enhanced Capability 0x27: Lane Margining at the Receiver
> 	0x0194: Enhanced Capability 0x1e: L1 PM
> 	0x01a4: Enhanced Capability 0x0b: Vendor-Specific
> 	0x02a4: Enhanced Capability 0x25: Data Link Feature 
> 	0x02b0: Enhanced Capability 0x1f: Precision Time Measurement
> 	0x02bc: Enhanced Capability 0x0b: Vendor-Specific
>  0:3:0: Apple M1 PCIe
> 	0x0000: Vendor ID: 106b, Product ID: 100c
> 	0x0004: Command: 0006, Status: 0010
> 	0x0008:	Class: 06 Bridge, Subclass: 04 PCI,
> 		Interface: 00, Revision: 01
> 	0x000c: BIST: 00, Header Type: 01, Latency Timer: 00,
> 		Cache Line Size: 08
> 	0x0010: BAR empty (00000000)
> 	0x0014: BAR empty (00000000)
> 	0x0018: Primary Bus: 0, Secondary Bus: 4, Subordinate Bus: 4,
> 		Secondary Latency Timer: 00
> 	0x001c: I/O Base: f0, I/O Limit: 00, Secondary Status: 0000
> 	0x0020: Memory Base: c010, Memory Limit: c010
> 	0x0024: Prefetch Memory Base: a011, Prefetch Memory Limit: a001
> 	0x0028: Prefetch Memory Base Upper 32 Bits: 00000005
> 	0x002c: Prefetch Memory Limit Upper 32 Bits: 00000005
> 	0x0030: I/O Base Upper 16 Bits: 0000, I/O Limit Upper 16 Bits: 0000
> 	0x0038: Expansion ROM Base Address: 00000000
> 	0x003c: Interrupt Pin: 01, Line: ff, Bridge Control: 0000
> 	0x0040: Capability 0x01: Power Management
> 		State: D0
> 	0x0050: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 1 vectors (1 enabled)
> 	0x0070: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 256 bytes
> 		Max Read Request Size: 512 bytes
> 		Link Speed: 8.0 / 16.0 GT/s
> 		Link Width: x1 / x2
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x0148: Enhanced Capability 0x19: Secondary PCIe Capability
> 	0x0158: Enhanced Capability 0x26: Physical Layer 16.0 GT/s
> 	0x017c: Enhanced Capability 0x27: Lane Margining at the Receiver
> 	0x0194: Enhanced Capability 0x1e: L1 PM
> 	0x01a4: Enhanced Capability 0x0b: Vendor-Specific
> 	0x02a4: Enhanced Capability 0x25: Data Link Feature 
> 	0x02b0: Enhanced Capability 0x1f: Precision Time Measurement
> 	0x02bc: Enhanced Capability 0x0b: Vendor-Specific
>  1:0:0: Broadcom BCM4388
> 	0x0000: Vendor ID: 14e4, Product ID: 4434
> 	0x0004: Command: 0000, Status: 0010
> 	0x0008:	Class: 02 Network, Subclass: 80 Miscellaneous,
> 		Interface: 00, Revision: 04
> 	0x000c: BIST: 00, Header Type: 80, Latency Timer: 00,
> 		Cache Line Size: 00
> 	0x0010: BAR mem 64bit addr: 0x0000000000000000/0x00010000
> 	0x0018: BAR mem 64bit addr: 0x0000000000000000/0x01000000
> 	0x0020: BAR empty (00000000)
> 	0x0024: BAR empty (00000000)
> 	0x0028: Cardbus CIS: 00000000
> 	0x002c: Subsystem Vendor ID: 106b Product ID: 4388
> 	0x0030: Expansion ROM Base Address: 00000000
> 	0x0038: 00000000
> 	0x003c: Interrupt Pin: 01 Line: 00 Min Gnt: 00 Max Lat: 00
> 	0x0048: Capability 0x01: Power Management
> 		State: D0 PME# enabled
> 	0x0058: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 32 vectors (1 enabled)
> 	0x0068: Capability 0x09: Vendor Specific
> 	0x00ac: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 512 bytes
> 		Max Read Request Size: 512 bytes
> 		Link Speed: 5.0 / 5.0 GT/s
> 		Link Width: x1 / x1
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x013c: Enhanced Capability 0x03: Device Serial Number
> 		Serial Number: 000000ffff000000
> 	0x0150: Enhanced Capability 0x04: Power Budgeting
> 	0x0160: Enhanced Capability 0x02: Virtual Channel Capability
> 	0x01b0: Enhanced Capability 0x18: Latency Tolerance Reporting
> 	0x0220: Enhanced Capability 0x15: Resizable BAR
> 	0x0240: Enhanced Capability 0x1e: L1 PM
> 	0x0200: Enhanced Capability 0x1f: Precision Time Measurement
>  1:0:1: Broadcom unknown
> 	0x0000: Vendor ID: 14e4, Product ID: 5f72
> 	0x0004: Command: 0000, Status: 0010
> 	0x0008:	Class: 02 Network, Subclass: 80 Miscellaneous,
> 		Interface: 00, Revision: 04
> 	0x000c: BIST: 00, Header Type: 80, Latency Timer: 00,
> 		Cache Line Size: 00
> 	0x0010: BAR mem 64bit addr: 0x0000000000000000/0x00008000
> 	0x0018: BAR mem 64bit addr: 0x0000000000000000/0x01000000
> 	0x0020: BAR empty (00000000)
> 	0x0024: BAR empty (00000000)
> 	0x0028: Cardbus CIS: 00000000
> 	0x002c: Subsystem Vendor ID: 106b Product ID: 4388
> 	0x0030: Expansion ROM Base Address: 00000000
> 	0x0038: 00000000
> 	0x003c: Interrupt Pin: 02 Line: 00 Min Gnt: 00 Max Lat: 00
> 	0x0048: Capability 0x01: Power Management
> 		State: D0 PME# enabled
> 	0x0058: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 32 vectors (1 enabled)
> 	0x0068: Capability 0x09: Vendor Specific
> 	0x00ac: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 512 bytes
> 		Max Read Request Size: 512 bytes
> 		Link Speed: 5.0 / 5.0 GT/s
> 		Link Width: x1 / x1
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x013c: Enhanced Capability 0x03: Device Serial Number
> 		Serial Number: 000000ffff000000
> 	0x0150: Enhanced Capability 0x04: Power Budgeting
> 	0x0160: Enhanced Capability 0x02: Virtual Channel Capability
> 	0x0220: Enhanced Capability 0x15: Resizable BAR
>  3:0:0: Broadcom BCM57762
> 	0x0000: Vendor ID: 14e4, Product ID: 1682
> 	0x0004: Command: 0006, Status: 0010
> 	0x0008:	Class: 02 Network, Subclass: 00 Ethernet,
> 		Interface: 00, Revision: 00
> 	0x000c: BIST: 00, Header Type: 00, Latency Timer: 00,
> 		Cache Line Size: 08
> 	0x0010: BAR mem prefetchable 64bit addr: 0x00000005a0000000/0x00010000
> 	0x0018: BAR mem prefetchable 64bit addr: 0x00000005a0010000/0x00010000
> 	0x0020: BAR empty (00000000)
> 	0x0024: BAR empty (00000000)
> 	0x0028: Cardbus CIS: 00000000
> 	0x002c: Subsystem Vendor ID: 14e4 Product ID: 1682
> 	0x0030: Expansion ROM Base Address: c0000000
> 	0x0038: 00000000
> 	0x003c: Interrupt Pin: 01 Line: 00 Min Gnt: 00 Max Lat: 00
> 	0x0048: Capability 0x01: Power Management
> 		State: D0 PME# enabled
> 	0x0050: Capability 0x03: Vital Product Data (VPD)
> 		Product Name: Broadcom NetXtreme Gigabit Ethernet Controller\^@
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 		    \^@\^@: 
> 	0x0058: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: yes; 8 vectors (1 enabled)
> 	0x00a0: Capability 0x11: Extended Message Signalled Interrupts (MSI-X)
> 		Enabled: no; table size 6 (BAR 2:0)
> 	0x00ac: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 128 bytes
> 		Max Read Request Size: 4096 bytes
> 		Link Speed: 2.5 / 2.5 GT/s
> 		Link Width: x1 / x1
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x013c: Enhanced Capability 0x03: Device Serial Number
> 		Serial Number: 0000001018000000
> 	0x0150: Enhanced Capability 0x04: Power Budgeting
> 	0x0160: Enhanced Capability 0x02: Virtual Channel Capability
> 	0x01b0: Enhanced Capability 0x18: Latency Tolerance Reporting
>  4:0:0: ASMedia ASM2142 xHCI
> 	0x0000: Vendor ID: 1b21, Product ID: 2142
> 	0x0004: Command: 0006, Status: 0010
> 	0x0008:	Class: 0c Serial Bus, Subclass: 03 USB,
> 		Interface: 30, Revision: 00
> 	0x000c: BIST: 00, Header Type: 00, Latency Timer: 00,
> 		Cache Line Size: 08
> 	0x0010: BAR mem 64bit addr: 0x00000000c0100000/0x00008000
> 	0x0018: BAR empty (00000000)
> 	0x001c: BAR empty (00000000)
> 	0x0020: BAR empty (00000000)
> 	0x0024: BAR empty (00000000)
> 	0x0028: Cardbus CIS: 00000000
> 	0x002c: Subsystem Vendor ID: 1b21 Product ID: 2142
> 	0x0030: Expansion ROM Base Address: 00000000
> 	0x0038: 00000000
> 	0x003c: Interrupt Pin: 01 Line: 00 Min Gnt: 00 Max Lat: 00
> 	0x0050: Capability 0x05: Message Signalled Interrupts (MSI)
> 		Enabled: no; 8 vectors (1 enabled)
> 	0x0068: Capability 0x11: Extended Message Signalled Interrupts (MSI-X)
> 		Enabled: yes; table size 8 (BAR 0:8192)
> 	0x0078: Capability 0x01: Power Management
> 		State: D0
> 	0x0080: Capability 0x10: PCI Express
> 		Max Payload Size: 128 / 512 bytes
> 		Max Read Request Size: 512 bytes
> 		Link Speed: 8.0 / 8.0 GT/s
> 		Link Width: x1 / x2
> 	0x0100: Enhanced Capability 0x01: Advanced Error Reporting
> 	0x0200: Enhanced Capability 0x19: Secondary PCIe Capability
> 	0x0300: Enhanced Capability 0x18: Latency Tolerance Reporting
> 	0x0400: Enhanced Capability 0x1e: L1 PM