Commit 2da5cb29 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville
Browse files

brcmfmac: CR4 takes precedence over CM3 in brcmf_chip_enter_download()



In the enter and exit download sequence the chip core info was checked
for presence of CM3 ARM core. If found it would enter download state for
the CM3. However, on devices that have a CM3 and CR4 this is not correct
and the CR4 should be used to enter download state. This patch changes
the ARM core lookup giving CR4 precedence.

Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 787eb033
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -967,13 +967,13 @@ void brcmf_chip_enter_download(struct brcmf_chip *pub)
	brcmf_dbg(TRACE, "Enter\n");
	brcmf_dbg(TRACE, "Enter\n");


	chip = container_of(pub, struct brcmf_chip_priv, pub);
	chip = container_of(pub, struct brcmf_chip_priv, pub);
	arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CM3);
	arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CR4);
	if (arm) {
	if (arm) {
		brcmf_chip_cm3_enterdl(chip);
		brcmf_chip_cr4_enterdl(chip);
		return;
		return;
	}
	}


	brcmf_chip_cr4_enterdl(chip);
	brcmf_chip_cm3_enterdl(chip);
}
}


bool brcmf_chip_exit_download(struct brcmf_chip *pub, u32 rstvec)
bool brcmf_chip_exit_download(struct brcmf_chip *pub, u32 rstvec)
@@ -984,11 +984,11 @@ bool brcmf_chip_exit_download(struct brcmf_chip *pub, u32 rstvec)
	brcmf_dbg(TRACE, "Enter\n");
	brcmf_dbg(TRACE, "Enter\n");


	chip = container_of(pub, struct brcmf_chip_priv, pub);
	chip = container_of(pub, struct brcmf_chip_priv, pub);
	arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CM3);
	arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CR4);
	if (arm)
	if (arm)
		return brcmf_chip_cm3_exitdl(chip);

		return brcmf_chip_cr4_exitdl(chip, rstvec);
		return brcmf_chip_cr4_exitdl(chip, rstvec);

	return brcmf_chip_cm3_exitdl(chip);
}
}


bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
bool brcmf_chip_sr_capable(struct brcmf_chip *pub)