qcacld-3.0: add device pointer in pld snoc API

Add device pointer in all pld snoc API to support
for numerous WLAN module.

Change-Id: Id6c3d559ebc67d40536a60ab78d468fb5f0fbf03
这个提交包含在:
Sarada Prasanna Garnayak
2017-10-16 11:54:36 +05:30
提交者 snandini
父节点 b941e3371a
当前提交 f04667af34
修改 3 个文件,包含 202 行新增45 行删除

查看文件

@@ -347,7 +347,7 @@ int pld_wlan_enable(struct device *dev, struct pld_wlan_enable_cfg *config,
ret = pld_pcie_wlan_enable(dev, config, mode, host_version);
break;
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_wlan_enable(config, mode, host_version);
ret = pld_snoc_wlan_enable(dev, config, mode, host_version);
break;
case PLD_BUS_TYPE_SDIO:
break;
@@ -378,7 +378,7 @@ int pld_wlan_disable(struct device *dev, enum pld_driver_mode mode)
ret = pld_pcie_wlan_disable(dev, mode);
break;
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_wlan_disable(mode);
ret = pld_snoc_wlan_disable(dev, mode);
break;
case PLD_BUS_TYPE_SDIO:
break;
@@ -409,7 +409,7 @@ int pld_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
ret = pld_pcie_set_fw_log_mode(dev, fw_log_mode);
break;
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_set_fw_log_mode(fw_log_mode);
ret = pld_snoc_set_fw_log_mode(dev, fw_log_mode);
break;
case PLD_BUS_TYPE_SDIO:
break;
@@ -971,7 +971,8 @@ int pld_ce_request_irq(struct device *dev, unsigned int ce_id,
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_ce_request_irq(ce_id, handler, flags, name, ctx);
ret = pld_snoc_ce_request_irq(dev, ce_id,
handler, flags, name, ctx);
break;
case PLD_BUS_TYPE_PCIE:
break;
@@ -998,7 +999,7 @@ int pld_ce_free_irq(struct device *dev, unsigned int ce_id, void *ctx)
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_ce_free_irq(ce_id, ctx);
ret = pld_snoc_ce_free_irq(dev, ce_id, ctx);
break;
case PLD_BUS_TYPE_PCIE:
break;
@@ -1021,7 +1022,7 @@ void pld_enable_irq(struct device *dev, unsigned int ce_id)
{
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
pld_snoc_enable_irq(ce_id);
pld_snoc_enable_irq(dev, ce_id);
break;
case PLD_BUS_TYPE_PCIE:
break;
@@ -1044,7 +1045,7 @@ void pld_disable_irq(struct device *dev, unsigned int ce_id)
{
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
pld_snoc_disable_irq(ce_id);
pld_snoc_disable_irq(dev, ce_id);
break;
case PLD_BUS_TYPE_PCIE:
break;
@@ -1072,7 +1073,7 @@ int pld_get_soc_info(struct device *dev, struct pld_soc_info *info)
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_get_soc_info(info);
ret = pld_snoc_get_soc_info(dev, info);
break;
case PLD_BUS_TYPE_PCIE:
ret = pld_pcie_get_soc_info(dev, info);
@@ -1100,7 +1101,7 @@ int pld_get_ce_id(struct device *dev, int irq)
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_get_ce_id(irq);
ret = pld_snoc_get_ce_id(dev, irq);
break;
case PLD_BUS_TYPE_PCIE:
ret = pld_pcie_get_ce_id(irq);
@@ -1126,7 +1127,7 @@ int pld_get_irq(struct device *dev, int ce_id)
switch (pld_get_bus_type(dev)) {
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_get_irq(ce_id);
ret = pld_snoc_get_irq(dev, ce_id);
break;
case PLD_BUS_TYPE_PCIE:
default:
@@ -1512,7 +1513,7 @@ int pld_is_qmi_disable(struct device *dev)
switch (type) {
case PLD_BUS_TYPE_SNOC:
ret = pld_snoc_is_qmi_disable();
ret = pld_snoc_is_qmi_disable(dev);
break;
case PLD_BUS_TYPE_PCIE:
case PLD_BUS_TYPE_SDIO:

查看文件

@@ -312,6 +312,7 @@ void pld_snoc_unregister_driver(void)
/**
* pld_snoc_wlan_enable() - Enable WLAN
* @dev: device
* @config: WLAN configuration data
* @mode: WLAN mode
* @host_version: host software version
@@ -322,7 +323,43 @@ void pld_snoc_unregister_driver(void)
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_snoc_wlan_enable(struct pld_wlan_enable_cfg *config,
#ifdef ICNSS_API_WITH_DEV
int pld_snoc_wlan_enable(struct device *dev, struct pld_wlan_enable_cfg *config,
enum pld_driver_mode mode, const char *host_version)
{
struct icnss_wlan_enable_cfg cfg;
enum icnss_driver_mode icnss_mode;
if (!dev)
return -ENODEV;
cfg.num_ce_tgt_cfg = config->num_ce_tgt_cfg;
cfg.ce_tgt_cfg = (struct ce_tgt_pipe_cfg *)
config->ce_tgt_cfg;
cfg.num_ce_svc_pipe_cfg = config->num_ce_svc_pipe_cfg;
cfg.ce_svc_cfg = (struct ce_svc_pipe_cfg *)
config->ce_svc_cfg;
cfg.num_shadow_reg_cfg = config->num_shadow_reg_cfg;
cfg.shadow_reg_cfg = (struct icnss_shadow_reg_cfg *)
config->shadow_reg_cfg;
switch (mode) {
case PLD_FTM:
icnss_mode = ICNSS_FTM;
break;
case PLD_EPPING:
icnss_mode = ICNSS_EPPING;
break;
default:
icnss_mode = ICNSS_MISSION;
break;
}
return icnss_wlan_enable(dev, &cfg, icnss_mode, host_version);
}
#else
int pld_snoc_wlan_enable(struct device *dev, struct pld_wlan_enable_cfg *config,
enum pld_driver_mode mode, const char *host_version)
{
struct icnss_wlan_enable_cfg cfg;
@@ -349,11 +386,14 @@ int pld_snoc_wlan_enable(struct pld_wlan_enable_cfg *config,
icnss_mode = ICNSS_MISSION;
break;
}
return icnss_wlan_enable(&cfg, icnss_mode, host_version);
}
#endif
/**
* pld_snoc_wlan_disable() - Disable WLAN
* @dev: device
* @mode: WLAN mode
*
* This function disables WLAN FW. It passes WLAN mode to FW.
@@ -361,13 +401,24 @@ int pld_snoc_wlan_enable(struct pld_wlan_enable_cfg *config,
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_snoc_wlan_disable(enum pld_driver_mode mode)
#ifdef ICNSS_API_WITH_DEV
int pld_snoc_wlan_disable(struct device *dev, enum pld_driver_mode mode)
{
if (!dev)
return -ENODEV;
return icnss_wlan_disable(dev, ICNSS_OFF);
}
#else
int pld_snoc_wlan_disable(struct device *dev, enum pld_driver_mode mode)
{
return icnss_wlan_disable(ICNSS_OFF);
}
#endif
/**
* pld_snoc_get_soc_info() - Get SOC information
* @dev: device
* @info: buffer to SOC information
*
* Return SOC info to the buffer.
@@ -375,7 +426,24 @@ int pld_snoc_wlan_disable(enum pld_driver_mode mode)
* Return: 0 for success
* Non zero failure code for errors
*/
int pld_snoc_get_soc_info(struct pld_soc_info *info)
#ifdef ICNSS_API_WITH_DEV
int pld_snoc_get_soc_info(struct device *dev, struct pld_soc_info *info)
{
int ret = 0;
struct icnss_soc_info icnss_info;
if (info == NULL || !dev)
return -ENODEV;
ret = icnss_get_soc_info(dev, &icnss_info);
if (0 != ret)
return ret;
memcpy(info, &icnss_info, sizeof(*info));
return 0;
}
#else
int pld_snoc_get_soc_info(struct device *dev, struct pld_soc_info *info)
{
int ret = 0;
struct icnss_soc_info icnss_info;
@@ -391,3 +459,4 @@ int pld_snoc_get_soc_info(struct pld_soc_info *info)
return 0;
}
#endif
#endif

查看文件

@@ -42,36 +42,41 @@ static inline int pld_snoc_register_driver(void)
static inline void pld_snoc_unregister_driver(void)
{
}
static inline int pld_snoc_wlan_enable(struct pld_wlan_enable_cfg *config,
enum pld_driver_mode mode, const char *host_version)
static inline int pld_snoc_wlan_enable(struct device *dev,
struct pld_wlan_enable_cfg *config,
enum pld_driver_mode mode, const char *host_version)
{
return 0;
}
static inline int pld_snoc_wlan_disable(enum pld_driver_mode mode)
static inline int pld_snoc_wlan_disable(struct device *dev,
enum pld_driver_mode mode)
{
return 0;
}
static inline int pld_snoc_ce_request_irq(unsigned int ce_id,
irqreturn_t (*handler)(int, void *),
unsigned long flags, const char *name, void *ctx)
static inline int pld_snoc_ce_request_irq(struct device *dev,
unsigned int ce_id,
irqreturn_t (*handler)(int, void *),
unsigned long flags,
const char *name, void *ctx)
{
return 0;
}
static inline int pld_snoc_ce_free_irq(unsigned int ce_id, void *ctx)
static inline int pld_snoc_ce_free_irq(struct device *dev,
unsigned int ce_id, void *ctx)
{
return 0;
}
static inline void pld_snoc_enable_irq(unsigned int ce_id)
static inline void pld_snoc_enable_irq(struct device *dev, unsigned int ce_id)
{
}
static inline void pld_snoc_disable_irq(unsigned int ce_id)
static inline void pld_snoc_disable_irq(struct device *dev, unsigned int ce_id)
{
}
static inline int pld_snoc_get_soc_info(struct pld_soc_info *info)
static inline int pld_snoc_get_soc_info(struct device *dev, struct pld_soc_info *info)
{
return 0;
}
static inline int pld_snoc_get_ce_id(int irq)
static inline int pld_snoc_get_ce_id(struct device *dev, int irq)
{
return 0;
}
@@ -83,7 +88,7 @@ static inline int pld_snoc_power_off(struct device *dev)
{
return 0;
}
static inline int pld_snoc_get_irq(int ce_id)
static inline int pld_snoc_get_irq(struct device *dev, int ce_id)
{
return 0;
}
@@ -113,11 +118,11 @@ unsigned int pld_snoc_socinfo_get_serial_number(struct device *dev)
{
return 0;
}
static inline int pld_snoc_is_qmi_disable(void)
static inline int pld_snoc_is_qmi_disable(struct device *dev)
{
return 0;
}
static inline int pld_snoc_set_fw_log_mode(u8 fw_log_mode)
static inline int pld_snoc_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
{
return 0;
}
@@ -128,33 +133,98 @@ static inline int pld_snoc_force_assert_target(struct device *dev)
#else
int pld_snoc_register_driver(void);
void pld_snoc_unregister_driver(void);
int pld_snoc_wlan_enable(struct pld_wlan_enable_cfg *config,
int pld_snoc_wlan_enable(struct device *dev,
struct pld_wlan_enable_cfg *config,
enum pld_driver_mode mode, const char *host_version);
int pld_snoc_wlan_disable(enum pld_driver_mode mode);
int pld_snoc_get_soc_info(struct pld_soc_info *info);
static inline int pld_snoc_ce_request_irq(unsigned int ce_id,
int pld_snoc_wlan_disable(struct device *dev, enum pld_driver_mode mode);
int pld_snoc_get_soc_info(struct device *dev, struct pld_soc_info *info);
#ifdef ICNSS_API_WITH_DEV
static inline int pld_snoc_ce_request_irq(struct device *dev,
unsigned int ce_id,
irqreturn_t (*handler)(int, void *),
unsigned long flags,
const char *name, void *ctx)
{
if (!dev)
return -ENODEV;
return icnss_ce_request_irq(dev, ce_id, handler, flags, name, ctx);
}
static inline int pld_snoc_ce_free_irq(struct device *dev,
unsigned int ce_id, void *ctx)
{
if (!dev)
return -ENODEV;
return icnss_ce_free_irq(dev, ce_id, ctx);
}
static inline void pld_snoc_enable_irq(struct device *dev, unsigned int ce_id)
{
if (dev)
icnss_enable_irq(dev, ce_id);
}
static inline void pld_snoc_disable_irq(struct device *dev, unsigned int ce_id)
{
if (dev)
icnss_disable_irq(dev, ce_id);
}
static inline int pld_snoc_get_ce_id(struct device *dev, int irq)
{
if (!dev)
return -ENODEV;
return icnss_get_ce_id(dev, irq);
}
static inline int pld_snoc_get_irq(struct device *dev, int ce_id)
{
if (!dev)
return -ENODEV;
return icnss_get_irq(dev, ce_id);
}
#else
static inline int pld_snoc_ce_request_irq(struct device *dev,
unsigned int ce_id,
irqreturn_t (*handler)(int, void *),
unsigned long flags,
const char *name, void *ctx)
{
return icnss_ce_request_irq(ce_id, handler, flags, name, ctx);
}
static inline int pld_snoc_ce_free_irq(unsigned int ce_id, void *ctx)
{
return icnss_ce_free_irq(ce_id, ctx);
}
static inline void pld_snoc_enable_irq(unsigned int ce_id)
static inline void pld_snoc_enable_irq(struct device *dev, unsigned int ce_id)
{
icnss_enable_irq(ce_id);
}
static inline void pld_snoc_disable_irq(unsigned int ce_id)
static inline void pld_snoc_disable_irq(struct device *dev, unsigned int ce_id)
{
icnss_disable_irq(ce_id);
}
static inline int pld_snoc_get_ce_id(int irq)
static inline int pld_snoc_ce_free_irq(struct device *dev,
unsigned int ce_id, void *ctx)
{
return icnss_ce_free_irq(ce_id, ctx);
}
static inline int pld_snoc_get_ce_id(struct device *dev, int irq)
{
return icnss_get_ce_id(irq);
}
static inline int pld_snoc_get_irq(struct device *dev, int ce_id)
{
return icnss_get_irq(ce_id);
}
#endif
static inline int pld_snoc_power_on(struct device *dev)
{
return icnss_power_on(dev);
@@ -163,10 +233,6 @@ static inline int pld_snoc_power_off(struct device *dev)
{
return icnss_power_off(dev);
}
static inline int pld_snoc_get_irq(int ce_id)
{
return icnss_get_irq(ce_id);
}
static inline int pld_snoc_athdiag_read(struct device *dev, uint32_t offset,
uint32_t memtype, uint32_t datalen,
uint8_t *output)
@@ -193,14 +259,35 @@ unsigned int pld_snoc_socinfo_get_serial_number(struct device *dev)
{
return icnss_socinfo_get_serial_number(dev);
}
static inline int pld_snoc_is_qmi_disable(void)
#ifdef ICNSS_API_WITH_DEV
static inline int pld_snoc_is_qmi_disable(struct device *dev)
{
if (!dev)
return -ENODEV;
return icnss_is_qmi_disable(dev);
}
static inline int pld_snoc_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
{
if (!dev)
return -ENODEV;
return icnss_set_fw_log_mode(dev, fw_log_mode);
}
#else
static inline int pld_snoc_is_qmi_disable(struct device *dev)
{
return icnss_is_qmi_disable();
}
static inline int pld_snoc_set_fw_log_mode(u8 fw_log_mode)
static inline int pld_snoc_set_fw_log_mode(struct device *dev, u8 fw_log_mode)
{
return icnss_set_fw_log_mode(fw_log_mode);
}
#endif
static inline int pld_snoc_force_assert_target(struct device *dev)
{
return icnss_trigger_recovery(dev);