autoconf.h revision 1.1.10.3 1 /* $NetBSD: autoconf.h,v 1.1.10.3 2017/12/03 11:36:16 jdolecek Exp $ */
2
3 /* $OpenBSD: autoconf.h,v 1.10 2001/05/05 22:33:42 art Exp $ */
4
5 /*
6 * Copyright (c) 1998-2004 Michael Shalayeff
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 #include <sys/device.h>
32
33 #include <sys/bus.h>
34 #include <machine/pdc.h>
35
36 /* 16 should be enough for anyone */
37 #define HPPA_MAXIOADDRS 16
38
39 struct confargs {
40 struct iodc_data ca_type; /* iodc-specific type descrition */
41 struct device_path ca_dp; /* device_path as found by pdc_scan */
42 union {
43 struct pdc_iodc_read uca_pir;
44 struct pdc_chassis_lcd uca_pcl;
45 } ca_u;
46 #define ca_pir ca_u.uca_pir
47 #define ca_pcl ca_u.uca_pcl
48
49 struct {
50 hppa_hpa_t addr;
51 u_int size;
52 } ca_addrs[HPPA_MAXIOADDRS];
53 const char *ca_name; /* device name/description */
54 bus_space_tag_t ca_iot; /* io tag */
55 int ca_mod; /* module number on the bus */
56 hppa_hpa_t ca_hpa; /* module HPA */
57 u_int ca_hpasz; /* module HPA size (if avail) */
58 bus_dma_tag_t ca_dmatag; /* DMA tag */
59 int ca_irq; /* module IRQ */
60 int ca_naddrs; /* number of valid addr ents */
61 hppa_hpa_t ca_hpabase; /* HPA base to use */
62 int ca_nmodules; /* check for modules 0 to nmodules - 1 */
63 };
64
65 #define HPPACF_IRQ_UNDEF (-1)
66 #define hppacf_irq cf_loc[GEDOENSCF_IRQ]
67
68 /*
69 * This is used for hppa_knownmodules table describing known to this port
70 * modules, system boards, cpus, fpus and busses.
71 */
72 struct hppa_mod_info {
73 int mi_type;
74 int mi_sv;
75 const char *mi_name;
76 };
77
78 extern void (*cold_hook)(int);
79 #define HPPA_COLD_COLD 0
80 #define HPPA_COLD_HOT 1
81 #define HPPA_COLD_OFF 2
82
83 const char *hppa_mod_info(int, int);
84
85 void hppa_modules_scan(void);
86 void hppa_modules_done(void);
87
88 void pdc_scanbus(device_t, struct confargs *,
89 device_t (*)(device_t, struct confargs *));
90
91 int mbprint(void *, const char *);
92 int mbsubmatch(device_t, struct cfdata *, const int *, void *);
93