1*d3a0e4e9Skettenis /* $OpenBSD: bcmgenetvar.h,v 1.1 2020/04/14 21:02:39 kettenis Exp $ */ 2*d3a0e4e9Skettenis /* $NetBSD: bcmgenetvar.h,v 1.1 2020/02/22 00:28:35 jmcneill Exp $ */ 3*d3a0e4e9Skettenis 4*d3a0e4e9Skettenis /*- 5*d3a0e4e9Skettenis * Copyright (c) 2020 Jared McNeill <jmcneill@invisible.ca> 6*d3a0e4e9Skettenis * All rights reserved. 7*d3a0e4e9Skettenis * 8*d3a0e4e9Skettenis * Redistribution and use in source and binary forms, with or without 9*d3a0e4e9Skettenis * modification, are permitted provided that the following conditions 10*d3a0e4e9Skettenis * are met: 11*d3a0e4e9Skettenis * 1. Redistributions of source code must retain the above copyright 12*d3a0e4e9Skettenis * notice, this list of conditions and the following disclaimer. 13*d3a0e4e9Skettenis * 2. Redistributions in binary form must reproduce the above copyright 14*d3a0e4e9Skettenis * notice, this list of conditions and the following disclaimer in the 15*d3a0e4e9Skettenis * documentation and/or other materials provided with the distribution. 16*d3a0e4e9Skettenis * 17*d3a0e4e9Skettenis * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18*d3a0e4e9Skettenis * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19*d3a0e4e9Skettenis * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*d3a0e4e9Skettenis * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21*d3a0e4e9Skettenis * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22*d3a0e4e9Skettenis * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23*d3a0e4e9Skettenis * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 24*d3a0e4e9Skettenis * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25*d3a0e4e9Skettenis * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*d3a0e4e9Skettenis * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*d3a0e4e9Skettenis * SUCH DAMAGE. 28*d3a0e4e9Skettenis */ 29*d3a0e4e9Skettenis 30*d3a0e4e9Skettenis /* 31*d3a0e4e9Skettenis * Broadcom GENETv5 32*d3a0e4e9Skettenis */ 33*d3a0e4e9Skettenis 34*d3a0e4e9Skettenis #ifndef _BCMGENETVAR_H 35*d3a0e4e9Skettenis #define _BCMGENETVAR_H 36*d3a0e4e9Skettenis 37*d3a0e4e9Skettenis #include <dev/ic/bcmgenetreg.h> 38*d3a0e4e9Skettenis 39*d3a0e4e9Skettenis enum genet_phy_mode { 40*d3a0e4e9Skettenis GENET_PHY_MODE_RGMII, 41*d3a0e4e9Skettenis GENET_PHY_MODE_RGMII_ID, 42*d3a0e4e9Skettenis GENET_PHY_MODE_RGMII_TXID, 43*d3a0e4e9Skettenis GENET_PHY_MODE_RGMII_RXID, 44*d3a0e4e9Skettenis }; 45*d3a0e4e9Skettenis 46*d3a0e4e9Skettenis struct genet_bufmap { 47*d3a0e4e9Skettenis bus_dmamap_t map; 48*d3a0e4e9Skettenis struct mbuf *mbuf; 49*d3a0e4e9Skettenis }; 50*d3a0e4e9Skettenis 51*d3a0e4e9Skettenis struct genet_ring { 52*d3a0e4e9Skettenis bus_dma_tag_t buf_tag; 53*d3a0e4e9Skettenis struct genet_bufmap buf_map[GENET_DMA_DESC_COUNT]; 54*d3a0e4e9Skettenis u_int next, queued; 55*d3a0e4e9Skettenis uint32_t cidx, pidx; 56*d3a0e4e9Skettenis }; 57*d3a0e4e9Skettenis 58*d3a0e4e9Skettenis struct genet_softc { 59*d3a0e4e9Skettenis struct device sc_dev; 60*d3a0e4e9Skettenis bus_space_tag_t sc_bst; 61*d3a0e4e9Skettenis bus_space_handle_t sc_bsh; 62*d3a0e4e9Skettenis bus_dma_tag_t sc_dmat; 63*d3a0e4e9Skettenis int sc_phy_id; 64*d3a0e4e9Skettenis enum genet_phy_mode sc_phy_mode; 65*d3a0e4e9Skettenis 66*d3a0e4e9Skettenis void *sc_ih; 67*d3a0e4e9Skettenis 68*d3a0e4e9Skettenis struct arpcom sc_ac; 69*d3a0e4e9Skettenis #define sc_lladdr sc_ac.ac_enaddr 70*d3a0e4e9Skettenis struct mii_data sc_mii; 71*d3a0e4e9Skettenis struct timeout sc_stat_ch; 72*d3a0e4e9Skettenis 73*d3a0e4e9Skettenis struct genet_ring sc_tx; 74*d3a0e4e9Skettenis struct genet_ring sc_rx; 75*d3a0e4e9Skettenis struct if_rxring sc_rx_ring; 76*d3a0e4e9Skettenis struct timeout sc_rxto; 77*d3a0e4e9Skettenis }; 78*d3a0e4e9Skettenis 79*d3a0e4e9Skettenis int genet_attach(struct genet_softc *); 80*d3a0e4e9Skettenis int genet_intr(void *); 81*d3a0e4e9Skettenis void genet_lladdr_read(struct genet_softc *, uint8_t *); 82*d3a0e4e9Skettenis 83*d3a0e4e9Skettenis #endif /* !_BCMGENETVAR_H */ 84