xref: /freebsd-src/sys/dev/vnic/thunder_bgx_var.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
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