Re: FAILED: patch "[PATCH] brcmfmac: Fix brcmf_chip_ai_coredisable not applying reset" failed to apply to 3.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 06/06/2014 07:13 PM, Arend van Spriel wrote:
On 04-06-14 00:37, gregkh@xxxxxxxxxxxxxxxxxxx wrote:

The patch below does not apply to the 3.14-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@xxxxxxxxxxxxxxx>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

 From ffa216bb5eecfce0f01b0b2a95d5c320dde90005 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@xxxxxxxxxx>
Date: Wed, 23 Apr 2014 12:20:55 +0200
Subject: [PATCH] brcmfmac: Fix brcmf_chip_ai_coredisable not applying reset
  bits to BCMA_IOCTL

brcmfmac has been broken on my cubietruck with a BCM43362:

brcmfmac: brcmf_chip_recognition: found AXI chip: BCM43362, rev=1
brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0:
         Apr 22 2013 14:50:00 version 5.90.195.89.6 FWID 01-b30a427d

since commit 53036261033: "brcmfmac: update core reset and disable routines".you

The problem is that since this commit brcmf_chip_ai_resetcore no longer sets
BCMA_IOCTL itself before bringing the core out of reset, instead relying on
brcmf_chip_ai_coredisable to do so. But brcmf_chip_ai_coredisable is a nop
of the chip is already in reset. This patch modifies brcmf_chip_ai_coredisable
to always set BCMA_IOCTL even if the core is already in reset.

This fixes brcmfmac hanging in firmware loading on my board.

Cc: stable@xxxxxxxxxxxxxxx # v3.14
Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
Acked-by: Arend van Spriel <arend@xxxxxxxxxxxx>
Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx>

Hans,

Are you taking care of this or should I?

I see that you already taken care of this, thanks.

Regards,

Hans

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
index df130ef53d1c..c7c9f15c0fe0 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
@@ -303,10 +303,10 @@ static void brcmf_chip_ai_coredisable(struct brcmf_core_priv *core,

      ci = core->chip;

-    /* if core is already in reset, just return */
+    /* if core is already in reset, skip reset */
      regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL);
      if ((regdata & BCMA_RESET_CTL_RESET) != 0)
-        return;
+        goto in_reset_configure;

      /* configure reset */
      ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL,
@@ -322,6 +322,7 @@ static void brcmf_chip_ai_coredisable(struct brcmf_core_priv *core,
      SPINWAIT(ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) !=
           BCMA_RESET_CTL_RESET, 300);

+in_reset_configure:
      /* in-reset configure */
      ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL,
               reset | BCMA_IOCTL_FGC | BCMA_IOCTL_CLK);


--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]