xref: /openbsd/sys/arch/armv7/armv7/armv7var.h (revision 1e299ff1)
1 /* $OpenBSD: armv7var.h,v 1.18 2021/04/02 03:02:46 tb Exp $ */
2 /*
3  * Copyright (c) 2005,2008 Dale Rahn <drahn@openbsd.org>
4  * Copyright (c) 2012-2013 Patrick Wildt <patrick@blueri.se>
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef __ARMV7VAR_H__
20 #define __ARMV7VAR_H__
21 
22 extern struct bus_space armv7_bs_tag;
23 
24 /* Boards device list */
25 struct board_dev {
26 	char	*name;
27 	int	unit;
28 };
29 
30 /* Needed by omap */
31 struct armv7_softc {
32 	struct device sc_dv;
33 
34 	struct board_dev *sc_board_devs;
35 };
36 
37 /* Physical memory range for on-chip devices. */
38 
39 struct armv7mem {
40 	bus_addr_t	addr;
41 	bus_size_t	size;
42 };
43 
44 #define ARMV7_DEV_NMEM 6
45 #define ARMV7_DEV_NIRQ 4
46 #define ARMV7_DEV_NDMA 4
47 
48 /* Descriptor for all on-chip devices. */
49 struct armv7_dev {
50 	char	*name;			/* driver name or made up name */
51 	int	unit;			/* driver instance number or -1 */
52 	struct	armv7mem mem[ARMV7_DEV_NMEM]; /* memory ranges */
53 	int	irq[ARMV7_DEV_NIRQ];	/* IRQ number(s) */
54 	int	dma[ARMV7_DEV_NDMA];	/* DMA chan number(s) */
55 };
56 
57 /* Passed as third arg to attach functions. */
58 struct armv7_attach_args {
59 	struct armv7_dev	*aa_dev;
60 	bus_space_tag_t		aa_iot;
61 	bus_dma_tag_t		aa_dmat;
62 };
63 
64 extern struct armv7_dev *armv7_devs;
65 
66 void	armv7_set_devs(struct armv7_dev *);
67 struct	armv7_dev *armv7_find_dev(const char *, int);
68 void	armv7_attach(struct device *, struct device *, void *);
69 int	armv7_submatch(struct device *, void *, void *);
70 
71 #endif /* __ARMV7VAR_H__ */
72 
73