Coalesce multiple ad-hoc definitions of the same function pointer into a dedicated type to avoid repetition. Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> Cc: Chris Healy <cphealy@xxxxxxxxx> Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx> Cc: Horia Geantă <horia.geanta@xxxxxxx> Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Cc: Iuliana Prodan <iuliana.prodan@xxxxxxx> Cc: linux-imx@xxxxxxx Cc: linux-crypto@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx --- drivers/crypto/caam/intern.h | 3 ++- drivers/crypto/caam/jr.c | 9 +++------ drivers/crypto/caam/jr.h | 7 ++++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index c7c10c90464b..fe2ca2ad6ff0 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -11,6 +11,7 @@ #define INTERN_H #include "ctrl.h" +#include "jr.h" /* Currently comes from Kconfig param as a ^2 (driver-required) */ #define JOBR_DEPTH (1 << CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE) @@ -31,7 +32,7 @@ * Each entry on an output ring needs one of these */ struct caam_jrentry_info { - void (*callbk)(struct device *dev, u32 *desc, u32 status, void *arg); + caam_jr_cbk callbk; void *cbkarg; /* Argument per ring entry */ u32 *desc_addr_virt; /* Stored virt addr for postprocessing */ dma_addr_t desc_addr_dma; /* Stored bus addr for done matching */ diff --git a/drivers/crypto/caam/jr.c b/drivers/crypto/caam/jr.c index 49c98a7f6723..3e78fedeea30 100644 --- a/drivers/crypto/caam/jr.c +++ b/drivers/crypto/caam/jr.c @@ -197,7 +197,7 @@ static void caam_jr_dequeue(unsigned long devarg) int hw_idx, sw_idx, i, head, tail; struct device *dev = (struct device *)devarg; struct caam_drv_private_jr *jrp = dev_get_drvdata(dev); - void (*usercall)(struct device *dev, u32 *desc, u32 status, void *arg); + caam_jr_cbk usercall; u32 *userdesc, userstatus; void *userarg; u32 outring_used = 0; @@ -354,10 +354,7 @@ EXPORT_SYMBOL(caam_jr_free); * @areq: optional pointer to a user argument for use at callback * time. **/ -int caam_jr_enqueue(struct device *dev, u32 *desc, - void (*cbk)(struct device *dev, u32 *desc, - u32 status, void *areq), - void *areq) +int caam_jr_enqueue(struct device *dev, u32 *desc, caam_jr_cbk cbk, void *areq) { struct caam_drv_private_jr *jrp = dev_get_drvdata(dev); struct caam_jrentry_info *head_entry; @@ -386,7 +383,7 @@ int caam_jr_enqueue(struct device *dev, u32 *desc, head_entry = &jrp->entinfo[head]; head_entry->desc_addr_virt = desc; head_entry->desc_size = desc_size; - head_entry->callbk = (void *)cbk; + head_entry->callbk = cbk; head_entry->cbkarg = areq; head_entry->desc_addr_dma = desc_dma; diff --git a/drivers/crypto/caam/jr.h b/drivers/crypto/caam/jr.h index eab611530f36..81acc6a6909f 100644 --- a/drivers/crypto/caam/jr.h +++ b/drivers/crypto/caam/jr.h @@ -9,11 +9,12 @@ #define JR_H /* Prototypes for backend-level services exposed to APIs */ +typedef void (*caam_jr_cbk)(struct device *dev, u32 *desc, u32 status, + void *areq); + struct device *caam_jr_alloc(void); void caam_jr_free(struct device *rdev); -int caam_jr_enqueue(struct device *dev, u32 *desc, - void (*cbk)(struct device *dev, u32 *desc, u32 status, - void *areq), +int caam_jr_enqueue(struct device *dev, u32 *desc, caam_jr_cbk cbk, void *areq); #endif /* JR_H */ -- 2.21.0