1201052Smarius/*-
2201052Smarius * Copyright (c) 2009 by Marius Strobl <marius@FreeBSD.org>.
3201052Smarius * All rights reserved.
4201052Smarius *
5201052Smarius * Redistribution and use in source and binary forms, with or without
6201052Smarius * modification, are permitted provided that the following conditions
7201052Smarius * are met:
8201052Smarius * 1. Redistributions of source code must retain the above copyright
9201052Smarius *    notice, this list of conditions, and the following disclaimer,
10201052Smarius *    without modification, immediately at the beginning of the file.
11201052Smarius * 2. Redistributions in binary form must reproduce the above copyright
12201052Smarius *    notice, this list of conditions and the following disclaimer in
13201052Smarius *    the documentation and/or other materials provided with the
14201052Smarius *    distribution.
15201052Smarius *
16201052Smarius * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17201052Smarius * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18201052Smarius * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19201052Smarius * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
20201052Smarius * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21201052Smarius * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22201052Smarius * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23201052Smarius * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24201052Smarius * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25201052Smarius * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26201052Smarius * SUCH DAMAGE.
27201052Smarius *
28201052Smarius * $FreeBSD: releng/10.2/sys/sparc64/pci/firevar.h 225931 2011-10-02 23:22:38Z marius $
29201052Smarius */
30201052Smarius
31201052Smarius#ifndef _SPARC64_PCI_FIREVAR_H_
32201052Smarius#define	_SPARC64_PCI_FIREVAR_H_
33201052Smarius
34201052Smariusstruct fire_softc {
35201052Smarius	struct iommu_state		sc_is;
36201052Smarius	struct bus_dma_methods		sc_dma_methods;
37201052Smarius
38201052Smarius	struct mtx			sc_msi_mtx;
39201052Smarius	struct mtx			sc_pcib_mtx;
40201052Smarius
41201052Smarius	struct resource			*sc_mem_res[FIRE_NREG];
42201052Smarius	struct resource			*sc_irq_res[FIRE_NINTR];
43201052Smarius	void				*sc_ihand[FIRE_NINTR];
44201052Smarius
45201052Smarius	struct rman			sc_pci_mem_rman;
46201052Smarius	struct rman			sc_pci_io_rman;
47201052Smarius	bus_space_handle_t		sc_pci_bh[FIRE_NRANGE];
48201052Smarius	bus_space_tag_t			sc_pci_cfgt;
49201052Smarius	bus_space_tag_t			sc_pci_iot;
50201052Smarius	bus_dma_tag_t			sc_pci_dmat;
51201052Smarius
52201052Smarius	device_t			sc_dev;
53201052Smarius
54201052Smarius	uint64_t			*sc_msiq;
55201052Smarius	u_char				*sc_msi_bitmap;
56201052Smarius	uint32_t			*sc_msi_msiq_table;
57201052Smarius	u_char				*sc_msiq_bitmap;
58201052Smarius	uint64_t			sc_msi_addr32;
59201052Smarius	uint64_t			sc_msi_addr64;
60201052Smarius	uint32_t			sc_msi_count;
61201052Smarius	uint32_t			sc_msi_first;
62201052Smarius	uint32_t			sc_msi_data_mask;
63201052Smarius	uint32_t			sc_msix_data_width;
64201052Smarius	uint32_t			sc_msiq_count;
65201052Smarius	uint32_t			sc_msiq_size;
66201052Smarius	uint32_t			sc_msiq_first;
67201052Smarius	uint32_t			sc_msiq_ino_first;
68201052Smarius
69201052Smarius	phandle_t			sc_node;
70201052Smarius
71201052Smarius	u_int				sc_mode;
72201052Smarius#define	FIRE_MODE_FIRE			0
73201052Smarius#define	FIRE_MODE_OBERON		1
74201052Smarius
75201052Smarius	u_int				sc_flags;
76201052Smarius#define	FIRE_MSIX			(1 << 0)
77201052Smarius
78201052Smarius	uint32_t			sc_ign;
79201052Smarius
80201052Smarius	uint32_t			sc_stats_ilu_err;
81201052Smarius	uint32_t			sc_stats_jbc_ce_async;
82201052Smarius	uint32_t			sc_stats_jbc_unsol_int;
83201052Smarius	uint32_t			sc_stats_jbc_unsol_rd;
84201052Smarius	uint32_t			sc_stats_mmu_err;
85201052Smarius	uint32_t			sc_stats_tlu_ce;
86201052Smarius	uint32_t			sc_stats_tlu_oe_non_fatal;
87201052Smarius	uint32_t			sc_stats_tlu_oe_rx_err;
88201052Smarius	uint32_t			sc_stats_tlu_oe_tx_err;
89201052Smarius	uint32_t			sc_stats_ubc_dmardue;
90201052Smarius
91201052Smarius	uint8_t				sc_pci_secbus;
92201052Smarius	uint8_t				sc_pci_subbus;
93201052Smarius
94201052Smarius	struct ofw_bus_iinfo		sc_pci_iinfo;
95201052Smarius};
96201052Smarius
97201052Smarius#endif /* !_SPARC64_PCI_FIREVAR_H_ */
98