if_cemacvar.h revision 1.4 1 1.4 skrll /* $NetBSD: if_cemacvar.h,v 1.4 2024/08/25 07:25:00 skrll Exp $ */
2 1.1 hkenken /*-
3 1.1 hkenken * Copyright (c) 2015 Genetec Corporation. All rights reserved.
4 1.1 hkenken * Written by Hashimoto Kenichi for Genetec Corporation.
5 1.1 hkenken *
6 1.1 hkenken * Redistribution and use in source and binary forms, with or without
7 1.1 hkenken * modification, are permitted provided that the following conditions
8 1.1 hkenken * are met:
9 1.1 hkenken * 1. Redistributions of source code must retain the above copyright
10 1.1 hkenken * notice, this list of conditions and the following disclaimer.
11 1.1 hkenken * 2. Redistributions in binary form must reproduce the above copyright
12 1.1 hkenken * notice, this list of conditions and the following disclaimer in the
13 1.1 hkenken * documentation and/or other materials provided with the distribution.
14 1.1 hkenken *
15 1.1 hkenken * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 hkenken * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 hkenken * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 hkenken * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 hkenken * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 hkenken * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 hkenken * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 hkenken * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 hkenken * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 hkenken * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 hkenken * POSSIBILITY OF SUCH DAMAGE.
26 1.1 hkenken */
27 1.1 hkenken
28 1.1 hkenken #ifndef _IF_CEMACVAR_H_
29 1.1 hkenken #define _IF_CEMACVAR_H_
30 1.1 hkenken
31 1.4 skrll #include <net/if.h>
32 1.4 skrll #include <net/if_media.h>
33 1.4 skrll #include <net/if_ether.h>
34 1.4 skrll #include <net/if_media.h>
35 1.4 skrll
36 1.4 skrll #include <dev/mii/miivar.h>
37 1.4 skrll
38 1.4 skrll #define RX_QLEN 64
39 1.4 skrll #define TX_QLEN 2 /* I'm very sorry but that's where we can get */
40 1.4 skrll
41 1.4 skrll struct cemac_qmeta {
42 1.4 skrll struct mbuf *m;
43 1.4 skrll bus_dmamap_t m_dmamap;
44 1.4 skrll };
45 1.4 skrll
46 1.4 skrll struct cemac_softc {
47 1.4 skrll device_t sc_dev;
48 1.4 skrll bus_space_tag_t sc_iot;
49 1.4 skrll bus_space_handle_t sc_ioh;
50 1.4 skrll bus_dma_tag_t sc_dmat;
51 1.4 skrll uint8_t sc_enaddr[ETHER_ADDR_LEN];
52 1.4 skrll struct ethercom sc_ethercom;
53 1.4 skrll mii_data_t sc_mii;
54 1.4 skrll
55 1.4 skrll void *rbqpage;
56 1.4 skrll unsigned rbqlen;
57 1.4 skrll bus_addr_t rbqpage_dsaddr;
58 1.4 skrll bus_dmamap_t rbqpage_dmamap;
59 1.4 skrll void *tbqpage;
60 1.4 skrll unsigned tbqlen;
61 1.4 skrll bus_addr_t tbqpage_dsaddr;
62 1.4 skrll bus_dmamap_t tbqpage_dmamap;
63 1.4 skrll
64 1.4 skrll volatile struct eth_dsc *RDSC;
65 1.4 skrll int rxqi;
66 1.4 skrll struct cemac_qmeta rxq[RX_QLEN];
67 1.4 skrll volatile struct eth_dsc *TDSC;
68 1.4 skrll int txqi, txqc;
69 1.4 skrll struct cemac_qmeta txq[TX_QLEN];
70 1.4 skrll callout_t cemac_tick_ch;
71 1.4 skrll bool tx_busy;
72 1.4 skrll
73 1.4 skrll unsigned cemac_flags;
74 1.4 skrll #define CEMAC_FLAG_GEM __BIT(0)
75 1.4 skrll };
76 1.4 skrll
77 1.2 skrll int cemac_intr(void *);
78 1.1 hkenken
79 1.4 skrll void cemac_attach_common(struct cemac_softc *);
80 1.1 hkenken
81 1.1 hkenken
82 1.1 hkenken #endif /* _IF_CEMACVAR_H_ */
83