msm-cdc-supply.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (c) 2016, 2018-2020 The Linux Foundation. All rights reserved.
  3. */
  4. #ifndef __CODEC_POWER_SUPPLY_H__
  5. #define __CODEC_POWER_SUPPLY_H__
  6. #include <linux/kernel.h>
  7. #include <linux/slab.h>
  8. #include <linux/regulator/consumer.h>
  9. struct cdc_regulator {
  10. const char *name;
  11. int min_uV;
  12. int max_uV;
  13. int optimum_uA;
  14. bool ondemand;
  15. bool lpm_supported;
  16. struct regulator *regulator;
  17. };
  18. struct cdc_wcd_supply {
  19. const char *name;
  20. struct device *dev;
  21. struct snd_soc_component *component;
  22. };
  23. extern int msm_cdc_get_power_supplies(struct device *dev,
  24. struct cdc_regulator **cdc_vreg,
  25. int *total_num_supplies);
  26. extern bool msm_cdc_is_ondemand_supply(struct device *dev,
  27. struct regulator_bulk_data *supplies,
  28. struct cdc_regulator *cdc_vreg,
  29. int num_supplies, char *supply_name);
  30. extern int msm_cdc_disable_ondemand_supply(struct device *dev,
  31. struct regulator_bulk_data *supplies,
  32. struct cdc_regulator *cdc_vreg,
  33. int num_supplies, char *supply_name);
  34. extern int msm_cdc_enable_ondemand_supply(struct device *dev,
  35. struct regulator_bulk_data *supplies,
  36. struct cdc_regulator *cdc_vreg,
  37. int num_supplies, char *supply_name);
  38. extern int msm_cdc_disable_static_supplies(struct device *dev,
  39. struct regulator_bulk_data *supplies,
  40. struct cdc_regulator *cdc_vreg,
  41. int num_supplies);
  42. extern int msm_cdc_release_supplies(struct device *dev,
  43. struct regulator_bulk_data *supplies,
  44. struct cdc_regulator *cdc_vreg,
  45. int num_supplies);
  46. extern int msm_cdc_enable_static_supplies(struct device *dev,
  47. struct regulator_bulk_data *supplies,
  48. struct cdc_regulator *cdc_vreg,
  49. int num_supplies);
  50. extern int msm_cdc_set_supplies_lpm_mode(struct device *dev,
  51. struct regulator_bulk_data *supplies,
  52. struct cdc_regulator *cdc_vreg,
  53. int num_supplies,
  54. bool flag);
  55. extern int msm_cdc_init_supplies(struct device *dev,
  56. struct regulator_bulk_data **supplies,
  57. struct cdc_regulator *cdc_vreg,
  58. int num_supplies);
  59. extern int msm_cdc_init_supplies_v2(struct device *dev,
  60. struct regulator_bulk_data **supplies,
  61. struct cdc_regulator *cdc_vreg,
  62. int num_supplies,
  63. u32 vote_regulator_on_demand);
  64. int msm_cdc_init_wcd_supply(struct device_node *np, const char *name,
  65. struct cdc_wcd_supply *cdc_supply);
  66. int msm_cdc_enable_wcd_supply(struct cdc_wcd_supply *cdc_supply, bool enable);
  67. extern int msm_cdc_set_supply_min_voltage(struct device *dev,
  68. struct regulator_bulk_data *supplies,
  69. struct cdc_regulator *cdc_vreg,
  70. int num_supplies, char *supply_name,
  71. int vval_min, bool override_min_vol);
  72. #endif