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
这个提交包含在:
Naman Padhiar
2021-10-22 13:24:09 +05:30
提交者 Madan Koyyalamudi
父节点 26e98c0815
当前提交 24053827cc
修改 2 个文件,包含 80 行新增0 行删除

查看文件

@@ -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