Re: [PATCH v2] brcmfmac: Add support for BCM43596 PCIe Wi-Fi

From: Konrad Dybcio
Date: Fri Nov 18 2022 - 11:47:23 EST




On 26/09/2022 11:27, Kalle Valo wrote:
Alvin Šipraga <ALSI@xxxxxxxxxxxxxxx> writes:

On Thu, Sep 22, 2022 at 03:02:12PM +0200, Linus Walleij wrote:
On Thu, Sep 22, 2022 at 12:21 PM Konrad Dybcio
<konrad.dybcio@xxxxxxxxxxxxxx> wrote:

Also worth noting is the 'somc' bit, meaning there are probably *some* SONY
customizations, but that's also just a guess.

What I have seen from BRCM customizations on Samsung phones is that
the per-device customization of firmware seems to involve the set-up of
some GPIO and power management pins. For example if integrated with
an SoC that has autonomous system resume, or if some GPIO line has
to be pulled to enable an external regulator or PA.

At least with Infineon (formerly Cypress), as a customer you might get a
private firmware and this will be maintained internally by them on a
separate customer branch. Any subsequent bugfixes or feature requests
will usually be applied to that customer branch and a new firmware built
from it. I think their internal "mainline" branch might get merged into
the customer branches from time to time, but this seems to be done on an
ad-hoc basis. This is our experience at least.

I would also point out that the BCM4359 is equivalent to the
CYW88359/CYW89359 chipset, which we are using in some of our
products. Note that this is a Cypress chipset (identifiable by the
Version: ... (... CY) tag in the version string). But the FW Konrad is
linking appears to be for a Broadcom chipset.

FYI, here's a publicly available set of firmware files for the '4359:

https://github.com/NXP/imx-firmware/tree/master/cyw-wifi-bt/1FD_CYW4359

Anyway, I would second Hector's suggestion and make this a separate FW.

I also recommend having a separate firmware filename. Like Hector said,
it's easy to have a symlink in userspace if same binary can be used.
So, I dusted off this patch and tried to change the fw name, only to discover that the BRCM_PCIE_43596_DEVICE_ID is equal to CY_PCIE_89459_DEVICE_ID, (which btw uses 4355/89459 fw), but then it makes the driver expect 4359/9 based on rev matching, so... the 43596 chip ID may be a lie? Or at least for the one used in my particular device? I'm beyond confused now..

I can think of a couple of hacky ways to force use of 43596 fw, but I don't think any would be really upstreamable..

Any thoughts?

Konrad