1289552Szbb/*-
2289552Szbb * Copyright (c) 2015 The FreeBSD Foundation
3289552Szbb * All rights reserved.
4289552Szbb *
5289552Szbb * This software was developed by Semihalf under
6289552Szbb * the sponsorship of the FreeBSD Foundation.
7289552Szbb *
8289552Szbb * Redistribution and use in source and binary forms, with or without
9289552Szbb * modification, are permitted provided that the following conditions
10289552Szbb * are met:
11289552Szbb * 1. Redistributions of source code must retain the above copyright
12289552Szbb *    notice, this list of conditions and the following disclaimer.
13289552Szbb * 2. Redistributions in binary form must reproduce the above copyright
14289552Szbb *    notice, this list of conditions and the following disclaimer in the
15289552Szbb *    documentation and/or other materials provided with the distribution.
16289552Szbb *
17289552Szbb * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18289552Szbb * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19289552Szbb * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20289552Szbb * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21289552Szbb * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22289552Szbb * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23289552Szbb * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24289552Szbb * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25289552Szbb * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26289552Szbb * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27289552Szbb * SUCH DAMAGE.
28289552Szbb *
29289552Szbb * $FreeBSD$
30289552Szbb *
31289552Szbb */
32289552Szbb
33289552Szbb#ifndef __THUNDER_MDIO_VAR_H__
34289552Szbb#define	__THUNDER_MDIO_VAR_H__
35289552Szbb
36289552Szbb#define	THUNDER_MDIO_DEVSTR	"Cavium ThunderX SMI/MDIO driver"
37294994SzbbMALLOC_DECLARE(M_THUNDER_MDIO);
38289552SzbbDECLARE_CLASS(thunder_mdio_driver);
39289552Szbb
40289552Szbbenum thunder_mdio_mode {
41289552Szbb	MODE_NONE = 0,
42289552Szbb	MODE_IEEE_C22,
43289552Szbb	MODE_IEEE_C45
44289552Szbb};
45289552Szbb
46289552Szbbstruct phy_desc {
47289552Szbb	device_t		miibus; /* One miibus per LMAC */
48289552Szbb	struct ifnet *		ifp;	/* Fake ifp to satisfy miibus */
49289552Szbb	int			lmacid;	/* ID number of LMAC connected */
50289552Szbb	TAILQ_ENTRY(phy_desc)	phy_desc_list;
51289552Szbb};
52289552Szbb
53289552Szbbstruct thunder_mdio_softc {
54289552Szbb	device_t		dev;
55289552Szbb	struct mtx		mtx;
56289552Szbb	struct resource *	reg_base;
57289552Szbb
58289552Szbb	enum thunder_mdio_mode	mode;
59289552Szbb
60289552Szbb	TAILQ_HEAD(,phy_desc)	phy_desc_head;
61289552Szbb};
62289552Szbb
63289552Szbbint thunder_mdio_attach(device_t);
64289552Szbb#endif
65