Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 
0003 /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
0004  * Copyright (C) 2018-2020 Linaro Ltd.
0005  */
0006 #ifndef _IPA_POWER_H_
0007 #define _IPA_POWER_H_
0008 
0009 struct device;
0010 
0011 struct ipa;
0012 struct ipa_power_data;
0013 
0014 /* IPA device power management function block */
0015 extern const struct dev_pm_ops ipa_pm_ops;
0016 
0017 /**
0018  * ipa_core_clock_rate() - Return the current IPA core clock rate
0019  * @ipa:    IPA structure
0020  *
0021  * Return: The current clock rate (in Hz), or 0.
0022  */
0023 u32 ipa_core_clock_rate(struct ipa *ipa);
0024 
0025 /**
0026  * ipa_power_modem_queue_stop() - Possibly stop the modem netdev TX queue
0027  * @ipa:    IPA pointer
0028  */
0029 void ipa_power_modem_queue_stop(struct ipa *ipa);
0030 
0031 /**
0032  * ipa_power_modem_queue_wake() - Possibly wake the modem netdev TX queue
0033  * @ipa:    IPA pointer
0034  */
0035 void ipa_power_modem_queue_wake(struct ipa *ipa);
0036 
0037 /**
0038  * ipa_power_modem_queue_active() - Report modem netdev TX queue active
0039  * @ipa:    IPA pointer
0040  */
0041 void ipa_power_modem_queue_active(struct ipa *ipa);
0042 
0043 /**
0044  * ipa_power_retention() - Control register retention on power collapse
0045  * @ipa:    IPA pointer
0046  * @enable: Whether retention should be enabled or disabled
0047  */
0048 void ipa_power_retention(struct ipa *ipa, bool enable);
0049 
0050 /**
0051  * ipa_power_setup() - Set up IPA power management
0052  * @ipa:    IPA pointer
0053  *
0054  * Return:  0 if successful, or a negative error code
0055  */
0056 int ipa_power_setup(struct ipa *ipa);
0057 
0058 /**
0059  * ipa_power_teardown() - Inverse of ipa_power_setup()
0060  * @ipa:    IPA pointer
0061  */
0062 void ipa_power_teardown(struct ipa *ipa);
0063 
0064 /**
0065  * ipa_power_init() - Initialize IPA power management
0066  * @dev:    IPA device
0067  * @data:   Clock configuration data
0068  *
0069  * Return:  A pointer to an ipa_power structure, or a pointer-coded error
0070  */
0071 struct ipa_power *ipa_power_init(struct device *dev,
0072                  const struct ipa_power_data *data);
0073 
0074 /**
0075  * ipa_power_exit() - Inverse of ipa_power_init()
0076  * @power:  IPA power pointer
0077  */
0078 void ipa_power_exit(struct ipa_power *power);
0079 
0080 #endif /* _IPA_POWER_H_ */