• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/octeon/
1/**********************************************************************
2 * Author: Cavium Networks
3 *
4 * Contact: support@caviumnetworks.com
5 * This file is part of the OCTEON SDK
6 *
7 * Copyright (c) 2003-2007 Cavium Networks
8 *
9 * This file is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License, Version 2, as
11 * published by the Free Software Foundation.
12 *
13 * This file is distributed in the hope that it will be useful, but
14 * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16 * NONINFRINGEMENT.  See the GNU General Public License for more
17 * details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this file; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 * or visit http://www.gnu.org/licenses/.
23 *
24 * This file may also be available under a different license from Cavium.
25 * Contact Cavium Networks for more information
26*********************************************************************/
27
28#define DEBUGPRINT(format, ...) do { if (printk_ratelimit()) 		\
29					printk(format, ##__VA_ARGS__);	\
30				} while (0)
31
32/**
33 * cvm_oct_get_buffer_ptr - convert packet data address to pointer
34 * @packet_ptr: Packet data hardware address
35 *
36 * Returns Packet buffer pointer
37 */
38static inline void *cvm_oct_get_buffer_ptr(union cvmx_buf_ptr packet_ptr)
39{
40	return cvmx_phys_to_ptr(((packet_ptr.s.addr >> 7) - packet_ptr.s.back)
41				<< 7);
42}
43
44/**
45 * INTERFACE - convert IPD port to locgical interface
46 * @ipd_port: Port to check
47 *
48 * Returns Logical interface
49 */
50static inline int INTERFACE(int ipd_port)
51{
52	if (ipd_port < 32)	/* Interface 0 or 1 for RGMII,GMII,SPI, etc */
53		return ipd_port >> 4;
54	else if (ipd_port < 36)	/* Interface 2 for NPI */
55		return 2;
56	else if (ipd_port < 40)	/* Interface 3 for loopback */
57		return 3;
58	else if (ipd_port == 40)	/* Non existant interface for POW0 */
59		return 4;
60	else
61		panic("Illegal ipd_port %d passed to INTERFACE\n", ipd_port);
62}
63
64/**
65 * INDEX - convert IPD/PKO port number to the port's interface index
66 * @ipd_port: Port to check
67 *
68 * Returns Index into interface port list
69 */
70static inline int INDEX(int ipd_port)
71{
72	if (ipd_port < 32)
73		return ipd_port & 15;
74	else
75		return ipd_port & 3;
76}
77