From b2fa5cf87e407b3b038a7a8af8d1625221983589 Mon Sep 17 00:00:00 2001 From: worproject <47917830+worproject@users.noreply.github.com> Date: Sun, 13 Dec 2020 18:11:41 +0200 Subject: [PATCH] Add CYW43438 support (BCM43430A1.hcd) --- README.md | 1 + src/vendor/cywbtserialbus.inx | Bin 5506 -> 5596 bytes src/vendor/fw/BCM43430A1.hcd | Bin 0 -> 30049 bytes 3 files changed, 1 insertion(+) create mode 100644 src/vendor/fw/BCM43430A1.hcd diff --git a/README.md b/README.md index a62c5ad..a0d8e2e 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ The initialization sequence is virtually the same on all these combo chips, so a We currently provide firmware/support for the following chips: * CYW43455 (BCM4345C0.hcd) - extensively tested on a Raspberry Pi 4 +* CYW43438 (BCM43430A1.hcd) - untested **Note:** since this driver uses the H4 protocol for communication, the UART link must support hardware flow control to prevent packet loss. diff --git a/src/vendor/cywbtserialbus.inx b/src/vendor/cywbtserialbus.inx index 31053c91bc40fdcecaaf525a6a3abb9b27324936..a514c1a67d00f49c916493dd39466d8c55f41931 100644 GIT binary patch delta 65 zcmZqDzN5WCj8)o+!I{CA!GysWj13qZ84MZp7%~`=8B#WXXPL+>j77obY7TZ@0IA~) A8vp diff --git a/src/vendor/fw/BCM43430A1.hcd b/src/vendor/fw/BCM43430A1.hcd new file mode 100644 index 0000000000000000000000000000000000000000..2a7ec965fb6e94d671309dbd23442444c6430b8d GIT binary patch literal 30049 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