329-v5.0-0007-brcmfmac-4373-save-restore-support.patch 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. From 2f2d389efda4caa4c1b69cb4fa2ab217f0fe6d6f Mon Sep 17 00:00:00 2001
  2. From: Chi-Hsien Lin <[email protected]>
  3. Date: Wed, 21 Nov 2018 07:53:50 +0000
  4. Subject: [PATCH] brcmfmac: 4373 save-restore support
  5. Use chipcommon sr_control0 register to check 4373 sr support.
  6. Reviewed-by: Arend van Spriel <[email protected]>
  7. Signed-off-by: Chi-Hsien Lin <[email protected]>
  8. Signed-off-by: Kalle Valo <[email protected]>
  9. ---
  10. .../broadcom/brcm80211/brcmfmac/chip.c | 5 +++++
  11. .../broadcom/brcm80211/include/chipcommon.h | 19 +++++++++++++++++++
  12. 2 files changed, 24 insertions(+)
  13. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
  14. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
  15. @@ -1365,6 +1365,11 @@ bool brcmf_chip_sr_capable(struct brcmf_
  16. addr = CORE_CC_REG(base, sr_control1);
  17. reg = chip->ops->read32(chip->ctx, addr);
  18. return reg != 0;
  19. + case CY_CC_4373_CHIP_ID:
  20. + /* explicitly check SR engine enable bit */
  21. + addr = CORE_CC_REG(base, sr_control0);
  22. + reg = chip->ops->read32(chip->ctx, addr);
  23. + return (reg & CC_SR_CTL0_ENABLE_MASK) != 0;
  24. case CY_CC_43012_CHIP_ID:
  25. addr = CORE_CC_REG(pmu->base, retention_ctl);
  26. reg = chip->ops->read32(chip->ctx, addr);
  27. --- a/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
  28. +++ b/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
  29. @@ -269,6 +269,25 @@ struct chipcregs {
  30. /* GSIO (spi/i2c) present, rev >= 37 */
  31. #define CC_CAP2_GSIO 0x00000002
  32. +/* sr_control0, rev >= 48 */
  33. +#define CC_SR_CTL0_ENABLE_MASK BIT(0)
  34. +#define CC_SR_CTL0_ENABLE_SHIFT 0
  35. +#define CC_SR_CTL0_EN_SR_ENG_CLK_SHIFT 1 /* sr_clk to sr_memory enable */
  36. +#define CC_SR_CTL0_RSRC_TRIGGER_SHIFT 2 /* Rising edge resource trigger 0 to
  37. + * sr_engine
  38. + */
  39. +#define CC_SR_CTL0_MIN_DIV_SHIFT 6 /* Min division value for fast clk
  40. + * in sr_engine
  41. + */
  42. +#define CC_SR_CTL0_EN_SBC_STBY_SHIFT 16
  43. +#define CC_SR_CTL0_EN_SR_ALP_CLK_MASK_SHIFT 18
  44. +#define CC_SR_CTL0_EN_SR_HT_CLK_SHIFT 19
  45. +#define CC_SR_CTL0_ALLOW_PIC_SHIFT 20 /* Allow pic to separate power
  46. + * domains
  47. + */
  48. +#define CC_SR_CTL0_MAX_SR_LQ_CLK_CNT_SHIFT 25
  49. +#define CC_SR_CTL0_EN_MEM_DISABLE_FOR_SLEEP 30
  50. +
  51. /* pmucapabilities */
  52. #define PCAP_REV_MASK 0x000000ff
  53. #define PCAP_RC_MASK 0x00001f00