xref: /freebsd-13-stable/sys/mips/nlm/hal/mdio.h (revision f8167e0404dab9ffeaca95853dd237ab7c587f82)
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2003-2012 Broadcom Corporation
5  * All Rights Reserved
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY BROADCOM ``AS IS'' AND ANY EXPRESS OR
19  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
25  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
28  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef __NLM_MDIO_H__
32 #define	__NLM_MDIO_H__
33 
34 /**
35 * @file_name mdio.h
36 * @author Netlogic Microsystems
37 * @brief Access functions for XLP MDIO
38 */
39 #define	INT_MDIO_CTRL				0x19
40 #define	INT_MDIO_CTRL_DATA			0x1A
41 #define	INT_MDIO_RD_STAT			0x1B
42 #define	INT_MDIO_LINK_STAT			0x1C
43 #define	EXT_G0_MDIO_CTRL			0x1D
44 #define	EXT_G1_MDIO_CTRL			0x21
45 #define	EXT_G0_MDIO_CTRL_DATA			0x1E
46 #define	EXT_G1_MDIO_CTRL_DATA			0x22
47 #define	EXT_G0_MDIO_LINK_STAT			0x20
48 #define	EXT_G1_MDIO_LINK_STAT			0x24
49 #define	EXT_G0_MDIO_RD_STAT			0x1F
50 #define	EXT_G1_MDIO_RD_STAT			0x23
51 
52 #define	INT_MDIO_CTRL_ST_POS			0
53 #define	INT_MDIO_CTRL_OP_POS			2
54 #define	INT_MDIO_CTRL_PHYADDR_POS		4
55 #define	INT_MDIO_CTRL_DEVTYPE_POS		9
56 #define	INT_MDIO_CTRL_TA_POS			14
57 #define	INT_MDIO_CTRL_MIIM_POS			16
58 #define	INT_MDIO_CTRL_LOAD_POS			19
59 #define	INT_MDIO_CTRL_XDIV_POS			21
60 #define	INT_MDIO_CTRL_MCDIV_POS			28
61 #define	INT_MDIO_CTRL_RST			0x40000000
62 #define	INT_MDIO_CTRL_SMP			0x00100000
63 #define	INT_MDIO_CTRL_CMD_LOAD			0x00080000
64 
65 #define	INT_MDIO_RD_STAT_MASK			0x0000FFFF
66 #define	INT_MDIO_STAT_LFV			0x00010000
67 #define	INT_MDIO_STAT_SC			0x00020000
68 #define	INT_MDIO_STAT_SM			0x00040000
69 #define	INT_MDIO_STAT_MIILFS			0x00080000
70 #define	INT_MDIO_STAT_MBSY			0x00100000
71 
72 #define	EXT_G_MDIO_CLOCK_DIV_4			0
73 #define	EXT_G_MDIO_CLOCK_DIV_2			1
74 #define	EXT_G_MDIO_CLOCK_DIV_1			2
75 #define	EXT_G_MDIO_REGADDR_POS			5
76 #define	EXT_G_MDIO_PHYADDR_POS			10
77 #define	EXT_G_MDIO_CMD_SP			0x00008000
78 #define	EXT_G_MDIO_CMD_PSIA			0x00010000
79 #define	EXT_G_MDIO_CMD_LCD			0x00020000
80 #define	EXT_G_MDIO_CMD_RDS			0x00040000
81 #define	EXT_G_MDIO_CMD_SC			0x00080000
82 #define	EXT_G_MDIO_MMRST			0x00100000
83 #define	EXT_G_MDIO_DIV				0x0000001E
84 #define	EXT_G_MDIO_DIV_WITH_HW_DIV64		0x00000010
85 
86 #define	EXT_G_MDIO_RD_STAT_MASK			0x0000FFFF
87 #define	EXT_G_MDIO_STAT_LFV			0x00010000
88 #define	EXT_G_MDIO_STAT_SC			0x00020000
89 #define	EXT_G_MDIO_STAT_SM			0x00040000
90 #define	EXT_G_MDIO_STAT_MIILFS			0x00080000
91 #define	EXT_G_MDIO_STAT_MBSY			0x80000000
92 #define	MDIO_OP_CMD_READ			0x10
93 #define	MDIO_OP_CMD_WRITE			0x01
94 
95 #if !defined(LOCORE) && !defined(__ASSEMBLY__)
96 
97 int nlm_int_gmac_mdio_read(uint64_t, int, int, int, int, int);
98 int nlm_int_gmac_mdio_write(uint64_t, int, int, int, int, int, uint16_t);
99 int nlm_int_gmac_mdio_reset(uint64_t, int, int, int);
100 int nlm_gmac_mdio_read(uint64_t, int, int, int, int, int);
101 int nlm_gmac_mdio_write(uint64_t, int, int, int, int, int, uint16_t);
102 int nlm_gmac_mdio_reset(uint64_t, int, int, int);
103 void nlm_mdio_reset_all(uint64_t);
104 
105 #endif /* !(LOCORE) && !(__ASSEMBLY__) */
106 #endif
107