12306b72aSZbigniew Bodek /* 22306b72aSZbigniew Bodek * Copyright (C) 2015 Cavium Inc. 32306b72aSZbigniew Bodek * All rights reserved. 42306b72aSZbigniew Bodek * 52306b72aSZbigniew Bodek * Redistribution and use in source and binary forms, with or without 62306b72aSZbigniew Bodek * modification, are permitted provided that the following conditions 72306b72aSZbigniew Bodek * are met: 82306b72aSZbigniew Bodek * 1. Redistributions of source code must retain the above copyright 92306b72aSZbigniew Bodek * notice, this list of conditions and the following disclaimer. 102306b72aSZbigniew Bodek * 2. Redistributions in binary form must reproduce the above copyright 112306b72aSZbigniew Bodek * notice, this list of conditions and the following disclaimer in the 122306b72aSZbigniew Bodek * documentation and/or other materials provided with the distribution. 132306b72aSZbigniew Bodek * 142306b72aSZbigniew Bodek * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 152306b72aSZbigniew Bodek * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 162306b72aSZbigniew Bodek * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 172306b72aSZbigniew Bodek * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 182306b72aSZbigniew Bodek * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 192306b72aSZbigniew Bodek * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 202306b72aSZbigniew Bodek * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 212306b72aSZbigniew Bodek * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 222306b72aSZbigniew Bodek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 232306b72aSZbigniew Bodek * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 242306b72aSZbigniew Bodek * SUCH DAMAGE. 252306b72aSZbigniew Bodek * 262306b72aSZbigniew Bodek */ 272306b72aSZbigniew Bodek 282306b72aSZbigniew Bodek #ifndef __THUNDER_BGX_VAR_H__ 292306b72aSZbigniew Bodek #define __THUNDER_BGX_VAR_H__ 302306b72aSZbigniew Bodek 31*be624ad4SZbigniew Bodek MALLOC_DECLARE(M_BGX); 32*be624ad4SZbigniew Bodek 332306b72aSZbigniew Bodek struct lmac { 342306b72aSZbigniew Bodek struct bgx *bgx; 352306b72aSZbigniew Bodek int dmac; 362306b72aSZbigniew Bodek uint8_t mac[ETHER_ADDR_LEN]; 372306b72aSZbigniew Bodek boolean_t link_up; 382306b72aSZbigniew Bodek int lmacid; /* ID within BGX */ 392306b72aSZbigniew Bodek int lmacid_bd; /* ID on board */ 402306b72aSZbigniew Bodek device_t phy_if_dev; 412306b72aSZbigniew Bodek int phyaddr; 422306b72aSZbigniew Bodek unsigned int last_duplex; 432306b72aSZbigniew Bodek unsigned int last_link; 442306b72aSZbigniew Bodek unsigned int last_speed; 452306b72aSZbigniew Bodek boolean_t is_sgmii; 462306b72aSZbigniew Bodek struct callout check_link; 472306b72aSZbigniew Bodek struct mtx check_link_mtx; 482306b72aSZbigniew Bodek }; 492306b72aSZbigniew Bodek 502306b72aSZbigniew Bodek struct bgx { 512306b72aSZbigniew Bodek device_t dev; 522306b72aSZbigniew Bodek struct resource * reg_base; 532306b72aSZbigniew Bodek 542306b72aSZbigniew Bodek uint8_t bgx_id; 552306b72aSZbigniew Bodek enum qlm_mode qlm_mode; 562306b72aSZbigniew Bodek struct lmac lmac[MAX_LMAC_PER_BGX]; 572306b72aSZbigniew Bodek int lmac_count; 582306b72aSZbigniew Bodek int lmac_type; 592306b72aSZbigniew Bodek int lane_to_sds; 602306b72aSZbigniew Bodek int use_training; 612306b72aSZbigniew Bodek }; 622306b72aSZbigniew Bodek 632306b72aSZbigniew Bodek #ifdef FDT 642306b72aSZbigniew Bodek extern int bgx_fdt_init_phy(struct bgx *); 652306b72aSZbigniew Bodek #endif 662306b72aSZbigniew Bodek 672306b72aSZbigniew Bodek #endif 68