numam-dpdk/drivers/common/cnxk/roc_bphy_irq.h
Tomasz Duszynski 603c65bfc9 common/cnxk: register BPHY IRQ
Add support for registering user supplied baseband PHY IRQ handler.

Signed-off-by: Jakub Palider <jpalider@marvell.com>
Signed-off-by: Tomasz Duszynski <tduszynski@marvell.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
2021-07-05 23:08:08 +02:00

50 lines
1.3 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(C) 2021 Marvell.
*/
#ifndef _ROC_BPHY_IRQ_
#define _ROC_BPHY_IRQ_
struct roc_bphy_irq_vec {
int fd;
int handler_cpu;
void (*handler)(int irq_num, void *isr_data);
void *isr_data;
};
struct roc_bphy_irq_chip {
struct roc_bphy_irq_vec *irq_vecs;
uint64_t max_irq;
uint64_t avail_irq_bmask;
int intfd;
int n_handlers;
char *mz_name;
};
struct roc_bphy_intr {
int irq_num;
void (*intr_handler)(int irq_num, void *isr_data);
void *isr_data;
int cpu;
/* stack for this interrupt, not supplied by a user */
uint8_t *sp;
};
__roc_api struct roc_bphy_irq_chip *roc_bphy_intr_init(void);
__roc_api void roc_bphy_intr_fini(struct roc_bphy_irq_chip *irq_chip);
__roc_api void roc_bphy_irq_stack_remove(int cpu);
__roc_api void *roc_bphy_irq_stack_get(int cpu);
__roc_api void roc_bphy_intr_handler(unsigned int irq_num);
__roc_api int
roc_bphy_irq_handler_set(struct roc_bphy_irq_chip *chip, int irq_num,
void (*handler)(int irq_num, void *isr_data),
void *isr_data);
__roc_api bool roc_bphy_intr_available(struct roc_bphy_irq_chip *irq_chip,
int irq_num);
__roc_api int roc_bphy_handler_clear(struct roc_bphy_irq_chip *chip,
int irq_num);
__roc_api int roc_bphy_intr_register(struct roc_bphy_irq_chip *irq_chip,
struct roc_bphy_intr *intr);
#endif /* _ROC_BPHY_IRQ_ */