1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * This file is based on code from OCTEON SDK by Cavium Networks.
4 *
5 * Copyright (c) 2003-2007 Cavium Networks
6 */
7
8/**
9 * cvm_oct_get_buffer_ptr - convert packet data address to pointer
10 * @packet_ptr: Packet data hardware address
11 *
12 * Returns Packet buffer pointer
13 */
14static inline void *cvm_oct_get_buffer_ptr(union cvmx_buf_ptr packet_ptr)
15{
16	return cvmx_phys_to_ptr(((packet_ptr.s.addr >> 7) - packet_ptr.s.back)
17				<< 7);
18}
19
20/**
21 * INTERFACE - convert IPD port to logical interface
22 * @ipd_port: Port to check
23 *
24 * Returns Logical interface
25 */
26static inline int INTERFACE(int ipd_port)
27{
28	int interface;
29
30	if (ipd_port == CVMX_PIP_NUM_INPUT_PORTS)
31		return 10;
32	interface = cvmx_helper_get_interface_num(ipd_port);
33	if (interface >= 0)
34		return interface;
35	panic("Illegal ipd_port %d passed to %s\n", ipd_port, __func__);
36}
37
38/**
39 * INDEX - convert IPD/PKO port number to the port's interface index
40 * @ipd_port: Port to check
41 *
42 * Returns Index into interface port list
43 */
44static inline int INDEX(int ipd_port)
45{
46	return cvmx_helper_get_interface_index_num(ipd_port);
47}
48