board.h revision 233542
1/*-
2 * Copyright 2003-2011 Netlogic Microsystems (Netlogic). All rights
3 * reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in
13 *    the documentation and/or other materials provided with the
14 *    distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY Netlogic Microsystems ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NETLOGIC OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26 * THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * NETLOGIC_BSD
29 * $FreeBSD: head/sys/mips/nlm/board.h 233542 2012-03-27 12:25:47Z jchandra $
30 */
31
32#ifndef __NLM_BOARD_H__
33#define __NLM_BOARD_H__
34
35#define	XLP_NAE_NBLOCKS		5
36#define	XLP_NAE_NPORTS		4
37#define	XLP_I2C_MAXDEVICES	8
38
39/*
40 * EVP board EEPROM info
41 */
42#define	EEPROM_I2CBUS		1
43#define	EEPROM_I2CADDR		0xAE
44#define	EEPROM_SIZE	 	48
45#define	EEPROM_MACADDR_OFFSET	2
46
47#if !defined(LOCORE) && !defined(__ASSEMBLY__)
48
49struct xlp_port_ivars {
50	int	port;
51	int	block;
52	int	type;
53	int	phy_addr;
54};
55
56struct xlp_block_ivars {
57	int	block;
58	int	type;
59	u_int	portmask;
60	struct xlp_port_ivars	port_ivars[XLP_NAE_NPORTS];
61};
62
63struct xlp_nae_ivars {
64	int 	node;
65	u_int	blockmask;
66	struct xlp_block_ivars	block_ivars[XLP_NAE_NBLOCKS];
67};
68
69struct xlp_board_info {
70	u_int	nodemask;
71	struct xlp_node_info {
72		struct xlp_nae_ivars	nae_ivars;
73	} nodes[XLP_MAX_NODES];
74};
75
76int nlm_board_info_setup(void);
77
78int nlm_board_eeprom_read(int node, int i2cbus, int addr, int offs,
79    uint8_t *buf,int sz);
80uint64_t nlm_board_cpld_base(int node, int chipselect);
81int nlm_board_cpld_majorversion(uint64_t cpldbase);
82int nlm_board_cpld_minorversion(uint64_t cpldbase);
83void nlm_board_cpld_reset(uint64_t cpldbase);
84int nlm_board_cpld_dboard_type(uint64_t cpldbase, int slot);
85#endif
86
87#endif
88