1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2020-2021 NXP
7 #include <rte_common.h>
8 #include <rte_bus_vdev.h>
9 #include <rte_malloc.h>
11 #include <rte_kvargs.h>
13 #include <rte_bbdev.h>
14 #include <rte_bbdev_pmd.h>
16 #include <bbdev_la12xx_pmd_logs.h>
18 #define DRIVER_NAME baseband_la12xx
20 /* private data structure */
21 struct bbdev_la12xx_private {
22 unsigned int max_nb_queues; /**< Max number of queues */
26 la12xx_bbdev_create(struct rte_vdev_device *vdev)
28 struct rte_bbdev *bbdev;
29 const char *name = rte_vdev_device_name(vdev);
31 PMD_INIT_FUNC_TRACE();
33 bbdev = rte_bbdev_allocate(name);
37 bbdev->data->dev_private = rte_zmalloc(name,
38 sizeof(struct bbdev_la12xx_private),
40 if (bbdev->data->dev_private == NULL) {
41 rte_bbdev_release(bbdev);
45 bbdev->dev_ops = NULL;
46 bbdev->device = &vdev->device;
47 bbdev->data->socket_id = 0;
48 bbdev->intr_handle = NULL;
50 /* register rx/tx burst functions for data path */
51 bbdev->dequeue_enc_ops = NULL;
52 bbdev->dequeue_dec_ops = NULL;
53 bbdev->enqueue_enc_ops = NULL;
54 bbdev->enqueue_dec_ops = NULL;
59 /* Initialise device */
61 la12xx_bbdev_probe(struct rte_vdev_device *vdev)
65 PMD_INIT_FUNC_TRACE();
70 name = rte_vdev_device_name(vdev);
74 return la12xx_bbdev_create(vdev);
77 /* Uninitialise device */
79 la12xx_bbdev_remove(struct rte_vdev_device *vdev)
81 struct rte_bbdev *bbdev;
84 PMD_INIT_FUNC_TRACE();
89 name = rte_vdev_device_name(vdev);
93 bbdev = rte_bbdev_get_named_dev(name);
97 rte_free(bbdev->data->dev_private);
99 return rte_bbdev_release(bbdev);
102 static struct rte_vdev_driver bbdev_la12xx_pmd_drv = {
103 .probe = la12xx_bbdev_probe,
104 .remove = la12xx_bbdev_remove
107 RTE_PMD_REGISTER_VDEV(DRIVER_NAME, bbdev_la12xx_pmd_drv);
108 RTE_LOG_REGISTER_DEFAULT(bbdev_la12xx_logtype, NOTICE);