1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
4 #include <rte_bus_pci.h>
6 #include <rte_rawdev.h>
7 #include <rte_rawdev_pmd.h>
11 #include "cnxk_bphy_irq.h"
13 static struct bphy_device *
14 cnxk_bphy_get_bphy_dev_by_dev_id(uint16_t dev_id)
16 struct rte_rawdev *rawdev;
18 if (!rte_rawdev_pmd_is_valid_dev(dev_id))
21 rawdev = &rte_rawdevs[dev_id];
23 return (struct bphy_device *)rawdev->dev_private;
27 cnxk_bphy_irq_max_get(uint16_t dev_id)
29 struct roc_bphy_irq_chip *irq_chip;
30 struct bphy_device *bphy_dev;
32 bphy_dev = cnxk_bphy_get_bphy_dev_by_dev_id(dev_id);
33 irq_chip = bphy_dev->irq_chip;
35 return roc_bphy_intr_max_get(irq_chip);
39 cnxk_bphy_intr_init(uint16_t dev_id)
41 struct bphy_device *bphy_dev = cnxk_bphy_get_bphy_dev_by_dev_id(dev_id);
43 bphy_dev->irq_chip = roc_bphy_intr_init();
44 if (bphy_dev->irq_chip == NULL)
51 cnxk_bphy_intr_fini(uint16_t dev_id)
53 struct bphy_device *bphy_dev = cnxk_bphy_get_bphy_dev_by_dev_id(dev_id);
54 struct roc_bphy_irq_chip *irq_chip = bphy_dev->irq_chip;
56 roc_bphy_intr_fini(irq_chip);
57 bphy_dev->irq_chip = NULL;
61 cnxk_bphy_intr_register(uint16_t dev_id, int irq_num,
62 cnxk_bphy_intr_handler_t handler, void *data, int cpu)
64 struct roc_bphy_intr intr = {
66 .intr_handler = handler,
71 struct bphy_device *bphy_dev = cnxk_bphy_get_bphy_dev_by_dev_id(dev_id);
72 struct roc_bphy_irq_chip *irq_chip = bphy_dev->irq_chip;
76 if (!handler || !data)
79 return roc_bphy_intr_register(irq_chip, &intr);
83 cnxk_bphy_intr_unregister(uint16_t dev_id, int irq_num)
85 struct bphy_device *bphy_dev = cnxk_bphy_get_bphy_dev_by_dev_id(dev_id);
87 if (bphy_dev->irq_chip)
88 roc_bphy_intr_clear(bphy_dev->irq_chip, irq_num);
90 plt_err("Missing irq chip");
93 struct cnxk_bphy_mem *
94 cnxk_bphy_mem_get(uint16_t dev_id)
96 struct bphy_device *bphy_dev = cnxk_bphy_get_bphy_dev_by_dev_id(dev_id);
98 return &bphy_dev->mem;