spm.h 821 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
  4. * Copyright (c) 2014,2015, Linaro Ltd.
  5. */
  6. #ifndef __SPM_H__
  7. #define __SPM_H__
  8. #include <linux/cpuidle.h>
  9. #define MAX_PMIC_DATA 2
  10. #define MAX_SEQ_DATA 64
  11. enum pm_sleep_mode {
  12. PM_SLEEP_MODE_STBY,
  13. PM_SLEEP_MODE_RET,
  14. PM_SLEEP_MODE_SPC,
  15. PM_SLEEP_MODE_PC,
  16. PM_SLEEP_MODE_NR,
  17. };
  18. struct spm_reg_data {
  19. const u16 *reg_offset;
  20. u32 spm_cfg;
  21. u32 spm_dly;
  22. u32 pmic_dly;
  23. u32 pmic_data[MAX_PMIC_DATA];
  24. u32 avs_ctl;
  25. u32 avs_limit;
  26. u8 seq[MAX_SEQ_DATA];
  27. u8 start_index[PM_SLEEP_MODE_NR];
  28. };
  29. struct spm_driver_data {
  30. void __iomem *reg_base;
  31. const struct spm_reg_data *reg_data;
  32. };
  33. void spm_set_low_power_mode(struct spm_driver_data *drv,
  34. enum pm_sleep_mode mode);
  35. #endif /* __SPM_H__ */