summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/include/openpicvar.h
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2004-01-13 11:24:36 +0000
committergrehan <grehan@FreeBSD.org>2004-01-13 11:24:36 +0000
commitf31f435513a72bd9462d2c1602f1a1f023f17497 (patch)
tree90c414efa278baec94d53f3908b2cf1e9a36d216 /sys/powerpc/include/openpicvar.h
parent5e6c3e74a5c479c3a0a6cf5c9aea54650ece04f5 (diff)
downloadFreeBSD-src-f31f435513a72bd9462d2c1602f1a1f023f17497.zip
FreeBSD-src-f31f435513a72bd9462d2c1602f1a1f023f17497.tar.gz
Make the OpenPic driver bus-independent, with attachments for
the MacIO chip and PSIM's IOBus. Bus-specific drivers should use the identify method to attach themselves to nexus so interrupt can be allocated before the h/w is probed. The 'early attach' routine in openpic is used for this stage of boot. When h/w is probed, the openpic can be attached properly. It will enable interrupts allocated prior to this.
Diffstat (limited to 'sys/powerpc/include/openpicvar.h')
-rw-r--r--sys/powerpc/include/openpicvar.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/sys/powerpc/include/openpicvar.h b/sys/powerpc/include/openpicvar.h
index 6f7cff6..5001b9b 100644
--- a/sys/powerpc/include/openpicvar.h
+++ b/sys/powerpc/include/openpicvar.h
@@ -28,13 +28,41 @@
#ifndef _POWERPC_OPENPICVAR_H_
#define _POWERPC_OPENPICVAR_H_
+#define OPENPIC_DEVSTR "OpenPIC Interrupt Controller"
+
+#define OPENPIC_IRQMAX 256 /* h/w allows more */
+
struct openpic_softc {
- vm_offset_t sc_base;
char *sc_version;
u_int sc_ncpu;
u_int sc_nirq;
int sc_psim;
struct rman sc_rman;
+ bus_space_tag_t sc_bt;
+ bus_space_handle_t sc_bh;
+ u_int sc_hwprobed;
+ u_int sc_early_done;
+ device_t sc_altdev;
+ u_char sc_irqrsv[OPENPIC_IRQMAX]; /* pre-h/w reservation */
};
+/*
+ * Bus-independent attach i/f
+ */
+int openpic_early_attach(device_t);
+int openpic_attach(device_t);
+
+/*
+ * PIC interface.
+ */
+struct resource *openpic_allocate_intr(device_t, device_t, int *,
+ u_long, u_int);
+int openpic_setup_intr(device_t, device_t,
+ struct resource *, int, driver_intr_t, void *,
+ void **);
+int openpic_teardown_intr(device_t, device_t,
+ struct resource *, void *);
+int openpic_release_intr(device_t dev, device_t, int,
+ struct resource *res);
+
#endif /* _POWERPC_OPENPICVAR_H_ */
OpenPOWER on IntegriCloud