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