You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
4.3 KiB

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2021. All rights reserved.
* Description: ATV IAPI interface
* Author: Hisilicon
* Created: 2019-12-07
*/
#include "mpi_frontend_ext.h"
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <pthread.h>
#include "soc_log.h"
#include "soc_errno.h"
#include "mpi_frontend.h"
#include "mpi_atv.h"
td_s32 ext_mpi_frontend_set_step(fe_ioctrl_frontend_step fe_step)
{
td_s32 ret;
if (fe_step.port >= MPI_ATV_NUM) {
soc_log_err("Input parameter(fe_step.port) invalid.\n");
soc_err_print_u32(fe_step.port);
return SOC_ERR_FRONTEND_INVALID_PORT;
}
ret = ioctl(frontend_get_fd(), FRONTEND_SET_STEP_CMD, &fe_step);
if (ret != TD_SUCCESS) {
soc_log_err("FRONTEND_SET_STEP_CMD error.\n");
return SOC_ERR_FRONTEND_FAILED_SETSTEP;
}
return TD_SUCCESS;
}
td_s32 ext_mpi_frontend_get_step(fe_ioctrl_frontend_step *fe_step)
{
td_s32 ret;
if (fe_step == TD_NULL) {
soc_log_err("Input parameter(fe_step) invalid.\n");
return SOC_ERR_FRONTEND_INVALID_POINT;
}
if (fe_step->port >= MPI_ATV_NUM) {
soc_log_err("Input parameter(fe_step->port) invalid.\n");
soc_err_print_u32(fe_step->port);
return SOC_ERR_FRONTEND_INVALID_PORT;
}
ret = ioctl(frontend_get_fd(), FRONTEND_GET_STEP_CMD, fe_step);
if (ret != TD_SUCCESS) {
soc_log_err("FRONTEND_GET_STEP_CMD error.\n");
return TD_FAILURE;
}
return TD_SUCCESS;
}
td_s32 ext_mpi_frontend_get_band(fe_ioctrl_band *fe_band)
{
td_s32 ret;
if (fe_band == NULL) {
soc_log_err("Input parameter(fe_band) invalid.\n");
return SOC_ERR_FRONTEND_INVALID_POINT;
}
if (fe_band->port >= MPI_ATV_NUM) {
soc_log_err("Input parameter(fe_band->port) invalid.\n");
soc_err_print_u32(fe_band->port);
return SOC_ERR_FRONTEND_INVALID_PORT;
}
ret = ioctl(frontend_get_fd(), FRONTEND_GET_BAND_CMD, fe_band);
if (ret != TD_SUCCESS) {
soc_log_err("FRONTEND_GET_BAND_CMD error.\n");
return SOC_ERR_FRONTEND_FAILED_GETBAND;
}
return TD_SUCCESS;
}
td_s32 ext_mpi_frontend_get_band_range(fe_ioctrl_band_range *fe_band_range)
{
td_s32 ret;
if (fe_band_range == NULL) {
soc_log_err("Input parameter(fe_band_range) invalid\n");
return SOC_ERR_FRONTEND_INVALID_POINT;
}
if (fe_band_range->port >= MPI_ATV_NUM) {
soc_log_err("Input parameter(fe_band_range->port) invalid.\n");
soc_err_print_u32(fe_band_range->port);
return SOC_ERR_FRONTEND_INVALID_PORT;
}
ret = ioctl(frontend_get_fd(), FRONTEND_GET_BAND_RANGE_CMD, fe_band_range);
if (ret != TD_SUCCESS) {
soc_log_err("FRONTEND_GET_BAND_RANGE_CMD error.\n");
return SOC_ERR_FRONTEND_FAILED_GETBANDRANGE;
}
return TD_SUCCESS;
}
td_s32 ext_mpi_frontend_set_top_adjustment(fe_ioctrl_top_adjust fe_top_adjust)
{
td_s32 ret;
if (fe_top_adjust.port >= MPI_ATV_NUM) {
soc_log_err("Input parameter(fe_top_adjust.port) invalid.\n");
soc_err_print_u32(fe_top_adjust.port);
return SOC_ERR_FRONTEND_INVALID_PORT;
}
ret = ioctl(frontend_get_fd(), FRONTEND_SET_TOP_ADJUST_CMD, &fe_top_adjust);
if (ret != TD_SUCCESS) {
soc_log_err("FRONTEND_SET_TOP_ADJUST_CMD error.\n");
soc_err_print_u32(fe_top_adjust.top);
return SOC_ERR_FRONTEND_FAILED_SETTOPADJUST;
}
return TD_SUCCESS;
}
td_s32 ext_mpi_frontend_get_bit_rate(fe_ioctrl_bit_rate *fe_bit_rate)
{
td_s32 ret;
if (fe_bit_rate == NULL) {
soc_log_err("Input parameter(fe_bit_rate) invalid.\n");
return SOC_ERR_FRONTEND_INVALID_PARA;
}
if (fe_bit_rate->port >= MPI_ATV_NUM) {
soc_log_err("Input parameter(fe_bit_rate->port) invalid.\n");
soc_err_print_u32(fe_bit_rate->port);
return SOC_ERR_FRONTEND_INVALID_PORT;
}
ret = ioctl(frontend_get_fd(), FRONTEND_GET_BITRATE_CMD, fe_bit_rate);
if (ret != TD_SUCCESS) {
soc_log_err("FRONTEND_GET_BITRATE_CMD error.\n");
return SOC_ERR_FRONTEND_FAILED_GETBAND;
}
return TD_SUCCESS;
}