qcacld-3.0: Export APIs for power on/off WLAN hardware

Export APIs to WLAN driver to power on/off WLAN hardware.

Change-Id: I3743b8fe333d3a64b01109e3e821ce44443bdafd
CRs-Fixed: 1017496
This commit is contained in:
Arun Khandavalli 2016-07-25 16:53:00 +05:30
commit 1496fcb9be
6 changed files with 121 additions and 1 deletions

View file

@ -366,5 +366,6 @@ int pld_get_soc_info(struct device *dev, struct pld_soc_info *info);
int pld_get_ce_id(struct device *dev, int irq);
void pld_lock_pm_sem(struct device *dev);
void pld_release_pm_sem(struct device *dev);
int pld_power_on(struct device *dev);
int pld_power_off(struct device *dev);
#endif

View file

@ -1314,3 +1314,55 @@ void pld_release_pm_sem(struct device *dev)
break;
}
}
/**
* pld_power_on() - Power on WLAN hardware
* @dev: device
*
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_power_on(struct device *dev)
{
int ret = 0;
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_PCIE:
ret = pld_pcie_power_on(dev);
break;
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_power_on(dev);
break;
default:
pr_err("Invalid device type\n");
break;
}
return ret;
}
/**
* pld_power_off() - Power off WLAN hardware
* @dev: device
*
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_power_off(struct device *dev)
{
int ret = 0;
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_PCIE:
ret = pld_pcie_power_on(dev);
break;
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_power_off(dev);
break;
default:
pr_err("Invalid device type\n");
break;
}
return ret;
}

View file

@ -846,6 +846,30 @@ void pld_pcie_release_pm_sem(void)
{
cnss_release_pm_sem();
}
/**
* pld_pcie_power_on() - Power on WLAN hardware
* @dev: device
*
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_pcie_power_on(struct device *dev)
{
return cnss_power_up(dev);
}
/**
* pld_pcie_power_off() - Power off WLAN hardware
* @dev: device
*
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_pcie_power_off(struct device *dev)
{
return cnss_power_down(dev);
}
#endif
#endif

View file

@ -199,6 +199,14 @@ static void pld_pcie_release_pm_sem(void)
{
return;
}
static inline int pld_pcie_power_on(struct device *dev)
{
return 0;
}
static inline int pld_pcie_power_off(struct device *dev)
{
return 0;
}
#else
int pld_pcie_get_fw_files_for_target(struct pld_fw_files *pfw_files,
u32 target_type, u32 target_version);
@ -224,6 +232,8 @@ int pld_pcie_auto_suspend(void);
int pld_pcie_auto_resume(void);
void pld_pcie_lock_pm_sem(void);
void pld_pcie_release_pm_sem(void);
int pld_pcie_power_on(struct device *dev);
int pld_pcie_power_off(struct device *dev);
#endif
#endif

View file

@ -358,4 +358,27 @@ int pld_snoc_get_ce_id(int irq)
return icnss_get_ce_id(irq);
}
/**
* pld_snoc_power_on() - Power on WLAN hardware
* @dev: device
*
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_snoc_power_on(struct device *dev)
{
return icnss_power_on(dev);
}
/**
* pld_snoc_power_off() - Power off WLAN hardware
* @dev: device
*
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_snoc_power_off(struct device *dev)
{
return icnss_power_off(dev);
}
#endif

View file

@ -75,6 +75,14 @@ static inline int pld_snoc_get_ce_id(int irq)
{
return 0;
}
static inline int pld_snoc_power_on(struct device *dev)
{
return 0;
}
static inline int pld_snoc_power_off(struct device *dev)
{
return 0;
}
#else
int pld_snoc_register_driver(void);
void pld_snoc_unregister_driver(void);
@ -89,6 +97,8 @@ int pld_snoc_ce_free_irq(unsigned int ce_id, void *ctx);
void pld_snoc_enable_irq(unsigned int ce_id);
void pld_snoc_disable_irq(unsigned int ce_id);
int pld_snoc_get_ce_id(int irq);
int pld_snoc_power_on(struct device *dev);
int pld_snoc_power_off(struct device *dev);
#endif
#endif