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
这个提交包含在:
@@ -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);
|
||||
|
在新工单中引用
屏蔽一个用户