Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85011762 authored by Arend Van Spriel's avatar Arend Van Spriel Committed by Dmitry Shmidt
Browse files

BACKPORT: brcmfmac: defer DPC processing during probe



The sdio dpc starts processing when in SDIOD_STATE_DATA. This state was
entered right after firmware download. This patch moves that transition
just before enabling sdio interrupt handling thus avoiding watchdog
expiry which would put the bus to sleep while probing.

Change-Id: I09c60752374b8145da78000935062be08c5c8a52
Reviewed-by: default avatarHante Meuleman <hante.meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
Reviewed-by: default avatarFranky Lin <franky.lin@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Signed-off-by: default avatarDmitry Shmidt <dimitrysh@google.com>
parent 5d1b9c0c
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -3401,10 +3401,6 @@ static int brcmf_sdio_download_firmware(struct brcmf_sdio *bus,
		goto err;
	}

	/* Allow full data communication using DPC from now on. */
	brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
	bcmerror = 0;

err:
	brcmf_sdio_clkctl(bus, CLK_SDONLY, false);
	sdio_release_host(bus->sdiodev->func[1]);
@@ -4112,6 +4108,9 @@ static void brcmf_sdio_firmware_callback(struct device *dev,
	}

	if (err == 0) {
		/* Allow full data communication using DPC from now on. */
		brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);

		err = brcmf_sdiod_intr_register(sdiodev);
		if (err != 0)
			brcmf_err("intr register failed:%d\n", err);