qcacld-3.0: Add PLD API for devm_request_irq
Add PLD API for devm_request_irq in PLD layer.It can be used by HIF layer when required. Change-Id: I1bd08e3c3dc64c47b9792b428322100e12150b27
这个提交包含在:
@@ -849,6 +849,25 @@ int pld_idle_shutdown(struct device *dev,
|
||||
*/
|
||||
int pld_idle_restart(struct device *dev,
|
||||
int (*restart_cb)(struct device *dev));
|
||||
|
||||
/**
|
||||
* pld_srng_devm_request_irq() - Register IRQ for SRNG
|
||||
* @dev: device
|
||||
* @irq: IRQ number
|
||||
* @handler: IRQ callback function
|
||||
* @irqflags: IRQ flags
|
||||
* @name: IRQ name
|
||||
* @ctx: IRQ context
|
||||
*
|
||||
* Return: 0 for success
|
||||
* Non zero failure code for errors
|
||||
*/
|
||||
int pld_srng_devm_request_irq(struct device *dev, int irq,
|
||||
irq_handler_t handler,
|
||||
unsigned long irqflags,
|
||||
const char *name,
|
||||
void *ctx);
|
||||
|
||||
/**
|
||||
* pld_srng_request_irq() - Register IRQ for SRNG
|
||||
* @dev: device
|
||||
@@ -865,6 +884,7 @@ int pld_srng_request_irq(struct device *dev, int irq, irq_handler_t handler,
|
||||
unsigned long irqflags,
|
||||
const char *name,
|
||||
void *ctx);
|
||||
|
||||
/**
|
||||
* pld_srng_free_irq() - Free IRQ for SRNG
|
||||
* @dev: device
|
||||
@@ -1023,6 +1043,14 @@ static inline int pld_nbuf_pre_alloc_free(struct sk_buff *skb)
|
||||
*/
|
||||
enum pld_bus_type pld_get_bus_type(struct device *dev);
|
||||
|
||||
static inline int pfrm_devm_request_irq(struct device *dev, unsigned int ce_id,
|
||||
irqreturn_t (*handler)(int, void *),
|
||||
unsigned long flags, const char *name,
|
||||
void *ctx)
|
||||
{
|
||||
return pld_srng_devm_request_irq(dev, ce_id, handler, flags, name, ctx);
|
||||
}
|
||||
|
||||
static inline int pfrm_request_irq(struct device *dev, unsigned int ce_id,
|
||||
irqreturn_t (*handler)(int, void *),
|
||||
unsigned long flags, const char *name,
|
||||
|
@@ -2179,6 +2179,58 @@ int pld_get_user_msi_assignment(struct device *dev, char *user_name,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* pld_srng_devm_request_irq() - Register IRQ for SRNG
|
||||
* @dev: device
|
||||
* @irq: IRQ number
|
||||
* @handler: IRQ callback function
|
||||
* @flags: IRQ flags
|
||||
* @name: IRQ name
|
||||
* @ctx: IRQ context
|
||||
*
|
||||
* Return: 0 for success
|
||||
* Non zero failure code for errors
|
||||
*/
|
||||
int pld_srng_devm_request_irq(struct device *dev, int irq,
|
||||
irq_handler_t handler,
|
||||
unsigned long irqflags,
|
||||
const char *devname,
|
||||
void *dev_data)
|
||||
{
|
||||
int ret = 0;
|
||||
enum pld_bus_type type = pld_get_bus_type(dev);
|
||||
|
||||
switch (type) {
|
||||
case PLD_BUS_TYPE_PCIE:
|
||||
ret = devm_request_irq(dev, irq, handler, irqflags,
|
||||
devname, dev_data);
|
||||
break;
|
||||
case PLD_BUS_TYPE_PCIE_FW_SIM:
|
||||
case PLD_BUS_TYPE_IPCI_FW_SIM:
|
||||
ret = pld_pcie_fw_sim_request_irq(dev, irq, handler,
|
||||
irqflags, devname,
|
||||
dev_data);
|
||||
break;
|
||||
case PLD_BUS_TYPE_SNOC:
|
||||
case PLD_BUS_TYPE_SDIO:
|
||||
case PLD_BUS_TYPE_USB:
|
||||
case PLD_BUS_TYPE_SNOC_FW_SIM:
|
||||
pr_err("Not supported on type %d\n", type);
|
||||
ret = -ENODEV;
|
||||
break;
|
||||
case PLD_BUS_TYPE_IPCI:
|
||||
ret = devm_request_irq(dev, irq, handler, irqflags,
|
||||
devname, dev_data);
|
||||
break;
|
||||
default:
|
||||
pr_err("Invalid device type %d\n", type);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* pld_srng_request_irq() - Register IRQ for SRNG
|
||||
* @dev: device
|
||||
|
在新工单中引用
屏蔽一个用户