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