mdio.h revision 330897
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
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 * $FreeBSD: stable/11/sys/mips/nlm/hal/mdio.h 330897 2018-03-14 03:19:51Z eadler $
31 */
32
33#ifndef __NLM_MDIO_H__
34#define	__NLM_MDIO_H__
35
36/**
37* @file_name mdio.h
38* @author Netlogic Microsystems
39* @brief Access functions for XLP MDIO
40*/
41#define	INT_MDIO_CTRL				0x19
42#define	INT_MDIO_CTRL_DATA			0x1A
43#define	INT_MDIO_RD_STAT			0x1B
44#define	INT_MDIO_LINK_STAT			0x1C
45#define	EXT_G0_MDIO_CTRL			0x1D
46#define	EXT_G1_MDIO_CTRL			0x21
47#define	EXT_G0_MDIO_CTRL_DATA			0x1E
48#define	EXT_G1_MDIO_CTRL_DATA			0x22
49#define	EXT_G0_MDIO_LINK_STAT			0x20
50#define	EXT_G1_MDIO_LINK_STAT			0x24
51#define	EXT_G0_MDIO_RD_STAT			0x1F
52#define	EXT_G1_MDIO_RD_STAT			0x23
53
54#define	INT_MDIO_CTRL_ST_POS			0
55#define	INT_MDIO_CTRL_OP_POS			2
56#define	INT_MDIO_CTRL_PHYADDR_POS		4
57#define	INT_MDIO_CTRL_DEVTYPE_POS		9
58#define	INT_MDIO_CTRL_TA_POS			14
59#define	INT_MDIO_CTRL_MIIM_POS			16
60#define	INT_MDIO_CTRL_LOAD_POS			19
61#define	INT_MDIO_CTRL_XDIV_POS			21
62#define	INT_MDIO_CTRL_MCDIV_POS			28
63#define	INT_MDIO_CTRL_RST			0x40000000
64#define	INT_MDIO_CTRL_SMP			0x00100000
65#define	INT_MDIO_CTRL_CMD_LOAD			0x00080000
66
67#define	INT_MDIO_RD_STAT_MASK			0x0000FFFF
68#define	INT_MDIO_STAT_LFV			0x00010000
69#define	INT_MDIO_STAT_SC			0x00020000
70#define	INT_MDIO_STAT_SM			0x00040000
71#define	INT_MDIO_STAT_MIILFS			0x00080000
72#define	INT_MDIO_STAT_MBSY			0x00100000
73
74#define	EXT_G_MDIO_CLOCK_DIV_4			0
75#define	EXT_G_MDIO_CLOCK_DIV_2			1
76#define	EXT_G_MDIO_CLOCK_DIV_1			2
77#define	EXT_G_MDIO_REGADDR_POS			5
78#define	EXT_G_MDIO_PHYADDR_POS			10
79#define	EXT_G_MDIO_CMD_SP			0x00008000
80#define	EXT_G_MDIO_CMD_PSIA			0x00010000
81#define	EXT_G_MDIO_CMD_LCD			0x00020000
82#define	EXT_G_MDIO_CMD_RDS			0x00040000
83#define	EXT_G_MDIO_CMD_SC			0x00080000
84#define	EXT_G_MDIO_MMRST			0x00100000
85#define	EXT_G_MDIO_DIV				0x0000001E
86#define	EXT_G_MDIO_DIV_WITH_HW_DIV64		0x00000010
87
88#define	EXT_G_MDIO_RD_STAT_MASK			0x0000FFFF
89#define	EXT_G_MDIO_STAT_LFV			0x00010000
90#define	EXT_G_MDIO_STAT_SC			0x00020000
91#define	EXT_G_MDIO_STAT_SM			0x00040000
92#define	EXT_G_MDIO_STAT_MIILFS			0x00080000
93#define	EXT_G_MDIO_STAT_MBSY			0x80000000
94#define	MDIO_OP_CMD_READ			0x10
95#define	MDIO_OP_CMD_WRITE			0x01
96
97#if !defined(LOCORE) && !defined(__ASSEMBLY__)
98
99int nlm_int_gmac_mdio_read(uint64_t, int, int, int, int, int);
100int nlm_int_gmac_mdio_write(uint64_t, int, int, int, int, int, uint16_t);
101int nlm_int_gmac_mdio_reset(uint64_t, int, int, int);
102int nlm_gmac_mdio_read(uint64_t, int, int, int, int, int);
103int nlm_gmac_mdio_write(uint64_t, int, int, int, int, int, uint16_t);
104int nlm_gmac_mdio_reset(uint64_t, int, int, int);
105void nlm_mdio_reset_all(uint64_t);
106
107#endif /* !(LOCORE) && !(__ASSEMBLY__) */
108#endif
109