Message ID | 20230106131905.81854-1-iivanov@suse.de |
---|---|
State | Accepted |
Commit | a5a36720c3f650f859f5e9535dd62d06f13f4f3b |
Headers | show |
Series | [v2] brcmfmac: Prefer DT board type over DMI board type | expand |
"Ivan T. Ivanov" <iivanov@suse.de> wrote: > The introduction of support for Apple board types inadvertently changed > the precedence order, causing hybrid SMBIOS+DT platforms to look up the > firmware using the DMI information instead of the device tree compatible > to generate the board type. Revert back to the old behavior, > as affected platforms use firmwares named after the DT compatible. > > Fixes: 7682de8b3351 ("wifi: brcmfmac: of: Fetch Apple properties") > > [1] https://bugzilla.opensuse.org/show_bug.cgi?id=1206697#c13 > > Cc: stable@vger.kernel.org > Signed-off-by: Ivan T. Ivanov <iivanov@suse.de> > Reviewed-by: Hector Martin <marcan@marcan.st> > Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> > Tested-by: Peter Robinson <pbrobinson@gmail.com> Dave applied this directly to net tree: https://git.kernel.org/linus/a5a36720c3f6
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c index a83699de01ec..fdd0c9abc1a1 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c @@ -79,7 +79,8 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, /* Apple ARM64 platforms have their own idea of board type, passed in * via the device tree. They also have an antenna SKU parameter */ - if (!of_property_read_string(np, "brcm,board-type", &prop)) + err = of_property_read_string(np, "brcm,board-type", &prop); + if (!err) settings->board_type = prop; if (!of_property_read_string(np, "apple,antenna-sku", &prop)) @@ -87,7 +88,7 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, /* Set board-type to the first string of the machine compatible prop */ root = of_find_node_by_path("/"); - if (root && !settings->board_type) { + if (root && err) { char *board_type; const char *tmp;