Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/dev/cardbus/cardbusvar.h
39507 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright (c) 2000,2001 Jonathan Chen. All rights reserved.
5
* Copyright (c) 2008 M. Warner Losh <[email protected]>
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
29
/*
30
* Structure definitions for the Cardbus Bus driver
31
*/
32
33
/*
34
* Static copy of the CIS buffer. Technically, you aren't supposed
35
* to do this. In practice, however, it works well.
36
*/
37
struct cis_buffer
38
{
39
size_t len; /* Actual length of the CIS */
40
uint8_t buffer[2040]; /* small enough to be 2k */
41
};
42
43
/*
44
* Per child information for the PCI device. Cardbus layers on some
45
* additional data.
46
*/
47
struct cardbus_devinfo
48
{
49
struct pci_devinfo pci;
50
uint8_t mprefetchable; /* bit mask of prefetchable BARs */
51
uint8_t mbelow1mb; /* bit mask of BARs which require below 1Mb */
52
uint16_t mfrid; /* manufacturer id */
53
uint16_t prodid; /* product id */
54
u_int funcid; /* function id */
55
union {
56
struct {
57
uint8_t nid[6]; /* MAC address */
58
} lan;
59
} funce;
60
uint32_t fepresent; /* bit mask of funce values present */
61
struct cdev *sc_cisdev;
62
struct cis_buffer sc_cis;
63
};
64
65
/*
66
* Per cardbus soft info. Not sure why we even keep this around...
67
*/
68
struct cardbus_softc
69
{
70
device_t sc_dev;
71
struct resource *sc_bus;
72
};
73
74
/*
75
* Per node callback structures.
76
*/
77
struct tuple_callbacks;
78
typedef int (tuple_cb) (device_t cbdev, device_t child, int id, int len,
79
uint8_t *tupledata, uint32_t start, uint32_t *off,
80
struct tuple_callbacks *info, void *);
81
struct tuple_callbacks {
82
int id;
83
char *name;
84
tuple_cb *func;
85
};
86
87
int cardbus_device_create(struct cardbus_softc *sc,
88
struct cardbus_devinfo *devi, device_t parent, device_t child);
89
int cardbus_device_destroy(struct cardbus_devinfo *devi);
90
int cardbus_parse_cis(device_t cbdev, device_t child,
91
struct tuple_callbacks *callbacks, void *);
92
93