diff mbox series

brcmfmac: Call brcmf_dmi_probe before brcmf_of_probe

Message ID 20181123091148.12742-1-hdegoede@redhat.com (mailing list archive)
State Accepted
Commit 554da3868eb1d7174710c18b4ddd6ff01f6d612c
Delegated to: Kalle Valo
Headers show
Series brcmfmac: Call brcmf_dmi_probe before brcmf_of_probe | expand

Commit Message

Hans de Goede Nov. 23, 2018, 9:11 a.m. UTC
ARM systems with UEFI may have both devicetree (of) and DMI data in this
case we end up setting brcmf_mp_device.board_type twice.

In this case we should prefer the devicetree data, because:
1) The devicerree data is more reliable
2) Some ARM systems (e.g. the Raspberry Pi 3 models) support both UEFI and
   classic uboot booting, the devicetree data is always there, so using it
   makes sure we ask for the same nvram file independent of how we booted.

This commit moves the brcmf_dmi_probe call to before the brcmf_of_probe
call, so that the latter can override the value of the first if both are
set.

Fixes: bd1e82bb420a ("brcmfmac: Set board_type from DMI on x86 based ...")
Cc: Peter Robinson <pbrobinson@gmail.com>
Tested-and-reported-by: Peter Robinson <pbrobinson@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kalle Valo Nov. 23, 2018, 9:45 a.m. UTC | #1
Hans de Goede <hdegoede@redhat.com> writes:

> ARM systems with UEFI may have both devicetree (of) and DMI data in this
> case we end up setting brcmf_mp_device.board_type twice.
>
> In this case we should prefer the devicetree data, because:
> 1) The devicerree data is more reliable
> 2) Some ARM systems (e.g. the Raspberry Pi 3 models) support both UEFI and
>    classic uboot booting, the devicetree data is always there, so using it
>    makes sure we ask for the same nvram file independent of how we booted.
>
> This commit moves the brcmf_dmi_probe call to before the brcmf_of_probe
> call, so that the latter can override the value of the first if both are
> set.
>
> Fixes: bd1e82bb420a ("brcmfmac: Set board_type from DMI on x86 based ...")
> Cc: Peter Robinson <pbrobinson@gmail.com>
> Tested-and-reported-by: Peter Robinson <pbrobinson@gmail.com>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Note to myself: commit bd1e82bb420a is on wireless-drivers-next so need
to queue for 4.20.
Kalle Valo Nov. 29, 2018, 3:32 p.m. UTC | #2
Hans de Goede <hdegoede@redhat.com> wrote:

> ARM systems with UEFI may have both devicetree (of) and DMI data in this
> case we end up setting brcmf_mp_device.board_type twice.
> 
> In this case we should prefer the devicetree data, because:
> 1) The devicerree data is more reliable
> 2) Some ARM systems (e.g. the Raspberry Pi 3 models) support both UEFI and
>    classic uboot booting, the devicetree data is always there, so using it
>    makes sure we ask for the same nvram file independent of how we booted.
> 
> This commit moves the brcmf_dmi_probe call to before the brcmf_of_probe
> call, so that the latter can override the value of the first if both are
> set.
> 
> Fixes: bd1e82bb420a ("brcmfmac: Set board_type from DMI on x86 based ...")
> Cc: Peter Robinson <pbrobinson@gmail.com>
> Tested-and-reported-by: Peter Robinson <pbrobinson@gmail.com>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Patch applied to wireless-drivers-next.git, thanks.

554da3868eb1 brcmfmac: Call brcmf_dmi_probe before brcmf_of_probe
diff mbox series

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
index d52774c6489b..0bb16bf574e3 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -449,8 +449,8 @@  struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
 	}
 	if (!found) {
 		/* No platform data for this device, try OF and DMI data */
-		brcmf_of_probe(dev, bus_type, settings);
 		brcmf_dmi_probe(settings, chip, chiprev);
+		brcmf_of_probe(dev, bus_type, settings);
 	}
 	return settings;
 }