1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2019-2020 NXP
12 #include <sys/ioctl.h>
15 #include <rte_common.h>
17 #include "fm_pcd_ext.h"
18 #include "fm_port_ext.h"
19 #include "fm_vsp_ext.h"
20 #include <dpaa_ethdev.h>
23 fm_port_vsp_alloc(t_handle h_fm_port,
24 t_fm_port_vspalloc_params *p_params)
26 t_device *p_dev = (t_device *)h_fm_port;
27 ioc_fm_port_vsp_alloc_params_t params;
29 _fml_dbg("Calling...\n");
30 memset(¶ms, 0, sizeof(ioc_fm_port_vsp_alloc_params_t));
31 memcpy(¶ms.params, p_params, sizeof(t_fm_port_vspalloc_params));
33 if (ioctl(p_dev->fd, FM_PORT_IOC_VSP_ALLOC, ¶ms))
34 RETURN_ERROR(MINOR, E_INVALID_OPERATION, NO_MSG);
36 _fml_dbg("Called.\n");
42 fm_vsp_config(t_fm_vsp_params *p_fm_vsp_params)
44 t_device *p_dev = NULL;
45 t_device *p_vsp_dev = NULL;
46 ioc_fm_vsp_params_t param;
48 p_dev = p_fm_vsp_params->h_fm;
50 _fml_dbg("Performing VSP Configuration...\n");
52 memset(¶m, 0, sizeof(ioc_fm_vsp_params_t));
53 memcpy(¶m, p_fm_vsp_params, sizeof(t_fm_vsp_params));
54 param.vsp_params.h_fm = UINT_TO_PTR(p_dev->id);
57 if (ioctl(p_dev->fd, FM_IOC_VSP_CONFIG, ¶m)) {
58 DPAA_PMD_ERR("%s ioctl error\n", __func__);
62 p_vsp_dev = (t_device *)malloc(sizeof(t_device));
64 DPAA_PMD_ERR("FM VSP Params!\n");
67 memset(p_vsp_dev, 0, sizeof(t_device));
68 p_vsp_dev->h_user_priv = (t_handle)p_dev;
70 p_vsp_dev->id = PTR_TO_UINT(param.id);
72 _fml_dbg("VSP Configuration completed\n");
74 return (t_handle)p_vsp_dev;
78 fm_vsp_init(t_handle h_fm_vsp)
80 t_device *p_dev = NULL;
81 t_device *p_vsp_dev = (t_device *)h_fm_vsp;
84 _fml_dbg("Calling...\n");
86 p_dev = (t_device *)p_vsp_dev->h_user_priv;
87 id.obj = UINT_TO_PTR(p_vsp_dev->id);
89 if (ioctl(p_dev->fd, FM_IOC_VSP_INIT, &id)) {
90 DPAA_PMD_ERR("%s ioctl error\n", __func__);
91 RETURN_ERROR(MINOR, E_INVALID_OPERATION, NO_MSG);
94 _fml_dbg("Called.\n");
100 fm_vsp_free(t_handle h_fm_vsp)
102 t_device *p_dev = NULL;
103 t_device *p_vsp_dev = (t_device *)h_fm_vsp;
106 _fml_dbg("Calling...\n");
108 p_dev = (t_device *)p_vsp_dev->h_user_priv;
109 id.obj = UINT_TO_PTR(p_vsp_dev->id);
111 if (ioctl(p_dev->fd, FM_IOC_VSP_FREE, &id)) {
112 DPAA_PMD_ERR("%s ioctl error\n", __func__);
113 RETURN_ERROR(MINOR, E_INVALID_OPERATION, NO_MSG);
119 _fml_dbg("Called.\n");
125 fm_vsp_config_buffer_prefix_content(t_handle h_fm_vsp,
126 t_fm_buffer_prefix_content *p_fm_buffer_prefix_content)
128 t_device *p_dev = NULL;
129 t_device *p_vsp_dev = (t_device *)h_fm_vsp;
130 ioc_fm_buffer_prefix_content_params_t params;
132 _fml_dbg("Calling...\n");
134 p_dev = (t_device *)p_vsp_dev->h_user_priv;
135 params.p_fm_vsp = UINT_TO_PTR(p_vsp_dev->id);
136 memcpy(¶ms.fm_buffer_prefix_content,
137 p_fm_buffer_prefix_content, sizeof(*p_fm_buffer_prefix_content));
139 if (ioctl(p_dev->fd, FM_IOC_VSP_CONFIG_BUFFER_PREFIX_CONTENT,
141 DPAA_PMD_ERR("%s ioctl error\n", __func__);
142 RETURN_ERROR(MINOR, E_INVALID_OPERATION, NO_MSG);
145 _fml_dbg("Called.\n");