1. 03 9月, 2019 1 次提交
    • R
      brcmfmac: get chip's default RAM info during PCIe setup · 82f93cf4
      Rafał Miłecki 提交于
      Getting RAM info just once per driver's lifetime (during chip
      recognition) is not enough as it may get adjusted later (depending on
      the used firmware). Subsequent inits may load different firmwares so a
      full RAM recognition is required on every PCIe setup. This is especially
      important since implementing hardware reset on a firmware crash.
      
      Moreover calling brcmf_chip_get_raminfo() makes sure that RAM core is
      up. It's important as having BCMA_CORE_SYS_MEM down on BCM4366 was
      resulting in firmware failing to initialize and following error:
      [   65.657546] brcmfmac 0000:01:00.0: brcmf_pcie_download_fw_nvram: Invalid shared RAM address 0x04000001
      
      This change makes brcmf_chip_get_raminfo() call during chip recognition
      redundant for PCIe devices but SDIO and USB still need it and it's a
      very small overhead anyway.
      
      Fixes: 4684997d ("brcmfmac: reset PCIe bus on a firmware crash")
      Signed-off-by: NRafał Miłecki <rafal@milecki.pl>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      82f93cf4
  2. 24 7月, 2019 1 次提交
  3. 28 5月, 2019 1 次提交
  4. 01 5月, 2019 1 次提交
  5. 26 4月, 2019 3 次提交
  6. 04 4月, 2019 2 次提交
  7. 21 2月, 2019 1 次提交
  8. 08 2月, 2019 1 次提交
  9. 08 1月, 2019 1 次提交
  10. 13 12月, 2018 1 次提交
  11. 07 11月, 2018 1 次提交
  12. 31 8月, 2018 1 次提交
  13. 25 7月, 2018 1 次提交
  14. 23 5月, 2018 2 次提交
  15. 30 4月, 2018 3 次提交
  16. 25 4月, 2018 1 次提交
  17. 27 3月, 2018 4 次提交
  18. 28 2月, 2018 1 次提交
  19. 12 1月, 2018 1 次提交
  20. 11 11月, 2017 1 次提交
  21. 28 7月, 2017 1 次提交
  22. 16 6月, 2017 1 次提交
  23. 05 4月, 2017 1 次提交
  24. 28 1月, 2017 1 次提交
  25. 20 1月, 2017 1 次提交
  26. 29 11月, 2016 1 次提交
  27. 16 6月, 2016 1 次提交
  28. 10 3月, 2016 1 次提交
    • H
      brcmfmac: Remove waitqueue_active check · 107b8713
      Hui Wang 提交于
      We met a problem of pm_suspend  when repeated closing/opening the lid
      on a Lenovo laptop (1/20 reproduce rate), below is the log:
      
      [ 199.735876] PM: Entering mem sleep
      [ 199.750516] e1000e: EEE TX LPI TIMER: 00000011
      [ 199.856638] Trying to free nonexistent resource <000000000000d000-000000000000d0ff>
      [ 201.753566] brcmfmac: brcmf_pcie_suspend: Timeout on response for entering D3 substate
      [ 201.753581] pci_legacy_suspend(): brcmf_pcie_suspend+0x0/0x1f0 [brcmfmac] returns -5
      [ 201.753585] dpm_run_callback(): pci_pm_suspend+0x0/0x160 returns -5
      [ 201.753589] PM: Device 0000:04:00.0 failed to suspend async: error -5
      
      Through debugging, we found when problem happens, it is not the device
      fails to enter D3, but the signal D3_ACK comes too early to pass the
      waitqueue_active() check.
      
      Just like this:
      brcmf_pcie_send_mb_data(devinfo, BRCMF_H2D_HOST_D3_INFORM);
      // signal is triggered here
      wait_event_timeout(devinfo->mbdata_resp_wait, devinfo->mbdata_completed,
      		   BRCMF_PCIE_MBDATA_TIMEOUT);
      
      So far I think it is safe to remove waitqueue_active check since there
      is only one place to trigger this signal (sending
      BRCMF_H2D_HOST_D3_INFORM). And it is not a problem calling wake_up
      event earlier than calling wait_event.
      
      Cc: Brett Rudley <brudley@broadcom.com>
      Cc: Hante Meuleman <meuleman@broadcom.com>
      Cc: Franky (Zhenhui) Lin <frankyl@broadcom.com>
      Cc: Pieter-Paul Giesberts <pieterpg@broadcom.com>
      Cc: Arend van Spriel <arend@broadcom.com>
      Signed-off-by: NHui Wang <hui.wang@canonical.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      107b8713
  29. 07 3月, 2016 3 次提交